Submission #2978431


Source Code Expand

#include <cstdint>
#include <cstdio>
#include <set>
#include <vector>
#include <queue>

const int N = 1e5 + 10;
const int64_t INF = ~0ull >> 3;

int n, m, s, t;
std::vector<std::pair<int, int64_t>> e[N];

int id1[N];
int64_t d1[N], d2[N];
std::queue<std::pair<int, int>> q1;
bool in[N];

void spfa1() {
    in[t] = true;
    for (int i = 1; i <= n; i++)
        d1[i] = d2[i] = INF;
    d1[t] = d2[t] = 0;
    q1.emplace(t, -1);

    while (!q1.empty()) {
        static int u, from;
        u = q1.front().first;
        from = q1.front().second;
        in[u] = false;
        q1.pop();

        for (auto p : e[u]) {
            int64_t res = (id1[u] == p.first ? d2[u] : d1[u]) + p.second;
            if (res < d1[p.first]) {
                if (id1[p.first] != u) {
                    d2[p.first] = d1[p.first];
                    //printf("update2 %d %lld\n", p.first, d1[p.first]);
                }
                //printf("update1 %d %d %lld\n", p.first, u, d1[u] + p.second);
                id1[p.first] = u;
                d1[p.first] = res;
                if (!in[p.first]) {
                    in[p.first] = true;
                    q1.emplace(p.first, u);
                }
            } else if (id1[p.first] != u && res < d2[p.first]) {
                d2[p.first] = res;
                if (!in[p.first]) {
                    in[p.first] = true;
                    q1.emplace(p.first, u);
                }
                //printf("update %d %d %d %d\n", p.first, u, d1[u], p.second);
            }
        }
    }
}

int64_t v[N];
std::queue<int> q;

void spfa2() {
    in[t] = true;
    for (int i = 1; i <= n; i++)
        v[i] = INF;
    v[t] = 0;
    q.push(t);

    while (!q.empty()) {
        static int u;
        u = q.front();
        in[u] = false;
        q.pop();

        for (auto p : e[u]) {
            int64_t res = std::max(u == id1[p.first] ? d2[p.first] : d1[p.first], v[u] + p.second);
            if (res < v[p.first]) {
                v[p.first] = res;
                if (!in[p.first]) {
                    in[p.first] = true;
                    q.push(p.first);
                }
            }
        }
    }
}

int main() {
    scanf("%d%d%d%d", &n, &m, &s, &t);
    for (int i = 1; i <= m; i++) {
        static int u, v, w;
        scanf("%d%d%d", &u, &v, &w);
        e[u].emplace_back(v, w);
        e[v].emplace_back(u, w);
    }

    spfa1();
    spfa2();

    // for (int i = 1; i <= n; i++)
        // printf("%lld %lld %lld\n", id1[i], d1[i], d2[i]);

    if (v[s] == INF)
        puts("-1");
    else
        printf("%lld\n", v[s]);

    return 0;
}

Submission Info

Submission Time
Task D - Revenge of the Broken Door
User smallling
Language C++14 (GCC 5.4.1)
Score 0
Code Size 2729 Byte
Status WA
Exec Time 258 ms
Memory 16384 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:105:30: warning: format ‘%lld’ expects argument of type ‘long long int’, but argument 2 has type ‘int64_t {aka long int}’ [-Wformat=]
         printf("%lld\n", v[s]);
                              ^
./Main.cpp:88:38: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d%d%d", &n, &m, &s, &t);
                                      ^
./Main.cpp:91:36: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d%d%d", &u, &v, &w);
                                    ^

Judge Result

Set Name All
Score / Max Score 0 / 100
Status
AC × 51
WA × 15
Set Name Test Cases
All 00_sample_00, 00_sample_01, 00_sample_02, 10_small_0, 10_small_1, 10_small_2, 10_small_3, 10_small_4, 10_small_5, 10_small_6, 10_small_7, 10_small_8, 10_small_9, 20_med_0, 20_med_1, 20_med_2, 20_med_3, 20_med_4, 20_med_5, 20_med_6, 21_med_0, 21_med_1, 21_med_2, 30_large_0, 30_large_1, 30_large_2, 30_large_3, 30_large_4, 30_large_5, 30_large_6, 31_large_0, 31_large_1, 31_large_2, 40_circle_0, 40_circle_1, 40_circle_2, 40_circle_3, 40_circle_4, 41_impossible_0, 41_impossible_1, 41_impossible_2, 42_special_0, 42_special_1, 42_special_10, 42_special_11, 42_special_12, 42_special_13, 42_special_14, 42_special_2, 42_special_3, 42_special_4, 42_special_5, 42_special_6, 42_special_7, 42_special_8, 42_special_9, 43_special_0, 43_special_1, 43_special_2, 43_special_3, 43_special_4, 43_special_5, 43_special_6, 43_special_7, 43_special_8, 43_special_9
Case Name Status Exec Time Memory
00_sample_00 AC 6 ms 3708 KB
00_sample_01 AC 2 ms 3456 KB
00_sample_02 AC 2 ms 3456 KB
10_small_0 AC 2 ms 3456 KB
10_small_1 AC 2 ms 3456 KB
10_small_2 AC 2 ms 3456 KB
10_small_3 AC 2 ms 3456 KB
10_small_4 AC 2 ms 3456 KB
10_small_5 AC 2 ms 3456 KB
10_small_6 AC 2 ms 3456 KB
10_small_7 AC 2 ms 3456 KB
10_small_8 AC 2 ms 3456 KB
10_small_9 AC 2 ms 3456 KB
20_med_0 WA 45 ms 9728 KB
20_med_1 AC 3 ms 3584 KB
20_med_2 AC 22 ms 6016 KB
20_med_3 AC 47 ms 8192 KB
20_med_4 AC 47 ms 9856 KB
20_med_5 AC 65 ms 10240 KB
20_med_6 AC 35 ms 7040 KB
21_med_0 AC 21 ms 6528 KB
21_med_1 AC 66 ms 10240 KB
21_med_2 AC 47 ms 10624 KB
30_large_0 AC 64 ms 10240 KB
30_large_1 AC 17 ms 5120 KB
30_large_2 WA 32 ms 7168 KB
30_large_3 AC 53 ms 10368 KB
30_large_4 AC 36 ms 7040 KB
30_large_5 AC 64 ms 9728 KB
30_large_6 WA 58 ms 10496 KB
31_large_0 AC 46 ms 8192 KB
31_large_1 AC 53 ms 10624 KB
31_large_2 WA 50 ms 10112 KB
40_circle_0 AC 43 ms 10112 KB
40_circle_1 AC 43 ms 10112 KB
40_circle_2 AC 43 ms 10112 KB
40_circle_3 AC 43 ms 10112 KB
40_circle_4 AC 43 ms 10112 KB
41_impossible_0 WA 157 ms 16384 KB
41_impossible_1 WA 163 ms 16384 KB
41_impossible_2 WA 153 ms 16384 KB
42_special_0 AC 43 ms 10112 KB
42_special_1 AC 43 ms 10112 KB
42_special_10 AC 47 ms 10240 KB
42_special_11 AC 46 ms 10368 KB
42_special_12 AC 47 ms 10624 KB
42_special_13 AC 50 ms 10872 KB
42_special_14 AC 56 ms 11632 KB
42_special_2 AC 44 ms 10112 KB
42_special_3 AC 44 ms 10112 KB
42_special_4 AC 44 ms 10112 KB
42_special_5 AC 44 ms 10112 KB
42_special_6 AC 43 ms 10112 KB
42_special_7 AC 44 ms 10112 KB
42_special_8 AC 43 ms 10112 KB
42_special_9 AC 45 ms 10112 KB
43_special_0 WA 231 ms 10880 KB
43_special_1 WA 244 ms 10880 KB
43_special_2 WA 229 ms 10880 KB
43_special_3 WA 230 ms 10880 KB
43_special_4 AC 256 ms 10880 KB
43_special_5 AC 241 ms 10880 KB
43_special_6 WA 228 ms 10880 KB
43_special_7 WA 240 ms 10880 KB
43_special_8 WA 235 ms 10880 KB
43_special_9 WA 258 ms 11008 KB