Submission #486034

# Submission time Handle Problem Language Result Execution time Memory
486034 2021-11-10T11:23:28 Z chungdinh Graph (BOI20_graph) C++17
100 / 100
242 ms 23480 KB
#include <iostream>
#include <vector>
#include <cstring>
#include <queue>
#include <algorithm>

using namespace std;

#define ii pair<int, int>
#define MP make_pair

const int N = 5e5 + 5;
const int iINF = 1e9;
const double dINF = 10000;

int n, m;
vector<ii> g[N];

int vsd[N];

ii z[N];
double res[N];

double subsub(const ii& a, const ii& b) {
    if (a.first == b.first) {
        if (a.second == b.second) return dINF;
        else return -dINF;
    }
    return (double)(b.second - a.second) / (a.first - b.first);
}
ii transfer(ii a, int c) {return {-a.first, c - a.second};}

bool sub(int ux) {
    queue<int> q; q.push(ux);
    z[ux] = {1, 0};
    vsd[ux] = 0;
    res[ux] = -dINF;

    vector<int> lst;

    while (q.size()) {
        int u = q.front(); q.pop();

        {
            ii tmp = z[u];
            if (tmp.first < 0) tmp = {-tmp.first, -tmp.second};
            lst.push_back(-tmp.second);
        }

        for (ii a : g[u]) {
            int v = a.first, c = a.second;

            if (vsd[v] < 0) {
                z[v] = transfer(z[u], c);
                vsd[v] = ux;
                q.push(v);
            } else {
                double tmp = subsub(transfer(z[u], c), z[v]);
                //cout << u << " " << v << " " << tmp << endl;

                if (tmp == dINF) continue;
                else if (tmp == -dINF) return false;
                else {
                    if (res[ux] == -dINF || res[ux] == tmp) res[ux] = tmp;
                    else return false;
                }
            }
        }
    }
    if (res[ux] == -dINF) {
        sort(lst.begin(), lst.end());
        res[ux] = lst[lst.size() / 2];
    }

    //cout << ux << " " << res[ux] << endl;

    return true;
}

int main() {
    #ifdef CHUNGDINH
    freopen("main.inp", "r", stdin);
    #endif // CHUNGDINH

    cin >> n >> m;
    for (int i = 0; i < m; i++) {
        int u, v, c; cin >> u >> v >> c;
        g[u].push_back(MP(v, c));
        g[v].push_back(MP(u, c));
    }

    for (int i = 1; i <= n; i++) vsd[i] = -1;
    for (int i = 1; i <= n; i++) if (vsd[i] < 0) {
        if (!sub(i)) {
            cout << "NO";
            return 0;
        }
    }

    //for (int i = 1; i <= n; i++) cout << z[i].first << " " << z[i].second << endl;

    cout << "YES\n";
    for (int i = 1; i <= n; i++) {
        if (!vsd[i]) {}
        else res[i] = res[vsd[i]] * z[i].first + z[i].second;

        cout << res[i] << " ";
    }
}
# Verdict Execution time Memory Grader output
1 Correct 7 ms 11980 KB answer = YES
2 Correct 7 ms 11980 KB answer = YES
3 Correct 8 ms 12052 KB answer = YES
4 Correct 7 ms 11988 KB answer = NO
5 Correct 6 ms 12040 KB answer = YES
6 Correct 6 ms 11980 KB answer = YES
7 Correct 7 ms 12028 KB answer = YES
8 Correct 7 ms 11980 KB answer = YES
9 Correct 7 ms 12044 KB answer = NO
10 Correct 7 ms 12012 KB answer = YES
11 Correct 7 ms 11980 KB answer = YES
12 Correct 7 ms 11980 KB answer = NO
13 Correct 7 ms 12040 KB answer = YES
14 Correct 7 ms 11980 KB answer = YES
15 Correct 8 ms 11980 KB answer = YES
16 Correct 7 ms 12048 KB answer = YES
17 Correct 7 ms 11980 KB answer = YES
18 Correct 7 ms 11980 KB answer = YES
19 Correct 7 ms 11980 KB answer = YES
20 Correct 7 ms 12048 KB answer = YES
21 Correct 7 ms 11980 KB answer = YES
22 Correct 6 ms 11952 KB answer = NO
23 Correct 7 ms 11976 KB answer = NO
# Verdict Execution time Memory Grader output
1 Correct 7 ms 11980 KB answer = YES
2 Correct 7 ms 11980 KB answer = YES
3 Correct 8 ms 12052 KB answer = YES
4 Correct 7 ms 11988 KB answer = NO
5 Correct 6 ms 12040 KB answer = YES
6 Correct 6 ms 11980 KB answer = YES
7 Correct 7 ms 12028 KB answer = YES
8 Correct 7 ms 11980 KB answer = YES
9 Correct 7 ms 12044 KB answer = NO
10 Correct 7 ms 12012 KB answer = YES
11 Correct 7 ms 11980 KB answer = YES
12 Correct 7 ms 11980 KB answer = NO
13 Correct 7 ms 12040 KB answer = YES
14 Correct 7 ms 11980 KB answer = YES
15 Correct 8 ms 11980 KB answer = YES
16 Correct 7 ms 12048 KB answer = YES
17 Correct 7 ms 11980 KB answer = YES
18 Correct 7 ms 11980 KB answer = YES
19 Correct 7 ms 11980 KB answer = YES
20 Correct 7 ms 12048 KB answer = YES
21 Correct 7 ms 11980 KB answer = YES
22 Correct 6 ms 11952 KB answer = NO
23 Correct 7 ms 11976 KB answer = NO
24 Correct 6 ms 12044 KB answer = YES
25 Correct 7 ms 11980 KB answer = YES
26 Correct 7 ms 12108 KB answer = YES
27 Correct 8 ms 12032 KB answer = YES
28 Correct 7 ms 12040 KB answer = YES
29 Correct 7 ms 12000 KB answer = YES
30 Correct 7 ms 11980 KB answer = NO
31 Correct 7 ms 11980 KB answer = YES
32 Correct 7 ms 11980 KB answer = YES
33 Correct 6 ms 11992 KB answer = YES
34 Correct 6 ms 12108 KB answer = YES
35 Correct 7 ms 11980 KB answer = YES
36 Correct 7 ms 12048 KB answer = YES
# Verdict Execution time Memory Grader output
1 Correct 7 ms 11980 KB answer = YES
2 Correct 7 ms 11980 KB answer = YES
3 Correct 8 ms 12052 KB answer = YES
4 Correct 7 ms 11988 KB answer = NO
5 Correct 6 ms 12040 KB answer = YES
6 Correct 6 ms 11980 KB answer = YES
7 Correct 7 ms 12028 KB answer = YES
8 Correct 7 ms 11980 KB answer = YES
9 Correct 7 ms 12044 KB answer = NO
10 Correct 7 ms 12012 KB answer = YES
11 Correct 7 ms 11980 KB answer = YES
12 Correct 7 ms 11980 KB answer = NO
13 Correct 7 ms 12040 KB answer = YES
14 Correct 7 ms 11980 KB answer = YES
15 Correct 8 ms 11980 KB answer = YES
16 Correct 7 ms 12048 KB answer = YES
17 Correct 7 ms 11980 KB answer = YES
18 Correct 7 ms 11980 KB answer = YES
19 Correct 7 ms 11980 KB answer = YES
20 Correct 7 ms 12048 KB answer = YES
21 Correct 7 ms 11980 KB answer = YES
22 Correct 6 ms 11952 KB answer = NO
23 Correct 7 ms 11976 KB answer = NO
24 Correct 6 ms 12044 KB answer = YES
25 Correct 7 ms 11980 KB answer = YES
26 Correct 7 ms 12108 KB answer = YES
27 Correct 8 ms 12032 KB answer = YES
28 Correct 7 ms 12040 KB answer = YES
29 Correct 7 ms 12000 KB answer = YES
30 Correct 7 ms 11980 KB answer = NO
31 Correct 7 ms 11980 KB answer = YES
32 Correct 7 ms 11980 KB answer = YES
33 Correct 6 ms 11992 KB answer = YES
34 Correct 6 ms 12108 KB answer = YES
35 Correct 7 ms 11980 KB answer = YES
36 Correct 7 ms 12048 KB answer = YES
37 Correct 7 ms 11980 KB answer = YES
38 Correct 6 ms 12040 KB answer = YES
39 Correct 7 ms 12044 KB answer = YES
40 Correct 7 ms 12108 KB answer = YES
41 Correct 7 ms 12052 KB answer = NO
42 Correct 8 ms 12048 KB answer = YES
43 Correct 11 ms 12108 KB answer = YES
44 Correct 8 ms 12108 KB answer = YES
45 Correct 8 ms 12108 KB answer = YES
46 Correct 8 ms 11980 KB answer = YES
47 Correct 8 ms 12108 KB answer = YES
48 Correct 7 ms 12108 KB answer = YES
# Verdict Execution time Memory Grader output
1 Correct 7 ms 11980 KB answer = YES
2 Correct 7 ms 11980 KB answer = YES
3 Correct 8 ms 12052 KB answer = YES
4 Correct 7 ms 11988 KB answer = NO
5 Correct 6 ms 12040 KB answer = YES
6 Correct 6 ms 11980 KB answer = YES
7 Correct 7 ms 12028 KB answer = YES
8 Correct 7 ms 11980 KB answer = YES
9 Correct 7 ms 12044 KB answer = NO
10 Correct 7 ms 12012 KB answer = YES
11 Correct 7 ms 11980 KB answer = YES
12 Correct 7 ms 11980 KB answer = NO
13 Correct 7 ms 12040 KB answer = YES
14 Correct 7 ms 11980 KB answer = YES
15 Correct 8 ms 11980 KB answer = YES
16 Correct 7 ms 12048 KB answer = YES
17 Correct 7 ms 11980 KB answer = YES
18 Correct 7 ms 11980 KB answer = YES
19 Correct 7 ms 11980 KB answer = YES
20 Correct 7 ms 12048 KB answer = YES
21 Correct 7 ms 11980 KB answer = YES
22 Correct 6 ms 11952 KB answer = NO
23 Correct 7 ms 11976 KB answer = NO
24 Correct 6 ms 12044 KB answer = YES
25 Correct 7 ms 11980 KB answer = YES
26 Correct 7 ms 12108 KB answer = YES
27 Correct 8 ms 12032 KB answer = YES
28 Correct 7 ms 12040 KB answer = YES
29 Correct 7 ms 12000 KB answer = YES
30 Correct 7 ms 11980 KB answer = NO
31 Correct 7 ms 11980 KB answer = YES
32 Correct 7 ms 11980 KB answer = YES
33 Correct 6 ms 11992 KB answer = YES
34 Correct 6 ms 12108 KB answer = YES
35 Correct 7 ms 11980 KB answer = YES
36 Correct 7 ms 12048 KB answer = YES
37 Correct 7 ms 11980 KB answer = YES
38 Correct 6 ms 12040 KB answer = YES
39 Correct 7 ms 12044 KB answer = YES
40 Correct 7 ms 12108 KB answer = YES
41 Correct 7 ms 12052 KB answer = NO
42 Correct 8 ms 12048 KB answer = YES
43 Correct 11 ms 12108 KB answer = YES
44 Correct 8 ms 12108 KB answer = YES
45 Correct 8 ms 12108 KB answer = YES
46 Correct 8 ms 11980 KB answer = YES
47 Correct 8 ms 12108 KB answer = YES
48 Correct 7 ms 12108 KB answer = YES
49 Correct 19 ms 12876 KB answer = YES
50 Correct 20 ms 12724 KB answer = YES
51 Correct 21 ms 12748 KB answer = YES
52 Correct 14 ms 12568 KB answer = NO
53 Correct 8 ms 12108 KB answer = YES
54 Correct 9 ms 12236 KB answer = YES
55 Correct 13 ms 12444 KB answer = YES
56 Correct 18 ms 12748 KB answer = YES
57 Correct 18 ms 12760 KB answer = YES
58 Correct 16 ms 12620 KB answer = YES
59 Correct 19 ms 12876 KB answer = YES
60 Correct 18 ms 12748 KB answer = YES
61 Correct 13 ms 12436 KB answer = YES
62 Correct 168 ms 19020 KB answer = NO
63 Correct 144 ms 19268 KB answer = YES
64 Correct 140 ms 19060 KB answer = NO
65 Correct 136 ms 19140 KB answer = YES
66 Correct 10 ms 12108 KB answer = YES
# Verdict Execution time Memory Grader output
1 Correct 7 ms 11980 KB answer = YES
2 Correct 7 ms 11980 KB answer = YES
3 Correct 8 ms 12052 KB answer = YES
4 Correct 7 ms 11988 KB answer = NO
5 Correct 6 ms 12040 KB answer = YES
6 Correct 6 ms 11980 KB answer = YES
7 Correct 7 ms 12028 KB answer = YES
8 Correct 7 ms 11980 KB answer = YES
9 Correct 7 ms 12044 KB answer = NO
10 Correct 7 ms 12012 KB answer = YES
11 Correct 7 ms 11980 KB answer = YES
12 Correct 7 ms 11980 KB answer = NO
13 Correct 7 ms 12040 KB answer = YES
14 Correct 7 ms 11980 KB answer = YES
15 Correct 8 ms 11980 KB answer = YES
16 Correct 7 ms 12048 KB answer = YES
17 Correct 7 ms 11980 KB answer = YES
18 Correct 7 ms 11980 KB answer = YES
19 Correct 7 ms 11980 KB answer = YES
20 Correct 7 ms 12048 KB answer = YES
21 Correct 7 ms 11980 KB answer = YES
22 Correct 6 ms 11952 KB answer = NO
23 Correct 7 ms 11976 KB answer = NO
24 Correct 6 ms 12044 KB answer = YES
25 Correct 7 ms 11980 KB answer = YES
26 Correct 7 ms 12108 KB answer = YES
27 Correct 8 ms 12032 KB answer = YES
28 Correct 7 ms 12040 KB answer = YES
29 Correct 7 ms 12000 KB answer = YES
30 Correct 7 ms 11980 KB answer = NO
31 Correct 7 ms 11980 KB answer = YES
32 Correct 7 ms 11980 KB answer = YES
33 Correct 6 ms 11992 KB answer = YES
34 Correct 6 ms 12108 KB answer = YES
35 Correct 7 ms 11980 KB answer = YES
36 Correct 7 ms 12048 KB answer = YES
37 Correct 7 ms 11980 KB answer = YES
38 Correct 6 ms 12040 KB answer = YES
39 Correct 7 ms 12044 KB answer = YES
40 Correct 7 ms 12108 KB answer = YES
41 Correct 7 ms 12052 KB answer = NO
42 Correct 8 ms 12048 KB answer = YES
43 Correct 11 ms 12108 KB answer = YES
44 Correct 8 ms 12108 KB answer = YES
45 Correct 8 ms 12108 KB answer = YES
46 Correct 8 ms 11980 KB answer = YES
47 Correct 8 ms 12108 KB answer = YES
48 Correct 7 ms 12108 KB answer = YES
49 Correct 19 ms 12876 KB answer = YES
50 Correct 20 ms 12724 KB answer = YES
51 Correct 21 ms 12748 KB answer = YES
52 Correct 14 ms 12568 KB answer = NO
53 Correct 8 ms 12108 KB answer = YES
54 Correct 9 ms 12236 KB answer = YES
55 Correct 13 ms 12444 KB answer = YES
56 Correct 18 ms 12748 KB answer = YES
57 Correct 18 ms 12760 KB answer = YES
58 Correct 16 ms 12620 KB answer = YES
59 Correct 19 ms 12876 KB answer = YES
60 Correct 18 ms 12748 KB answer = YES
61 Correct 13 ms 12436 KB answer = YES
62 Correct 168 ms 19020 KB answer = NO
63 Correct 144 ms 19268 KB answer = YES
64 Correct 140 ms 19060 KB answer = NO
65 Correct 136 ms 19140 KB answer = YES
66 Correct 10 ms 12108 KB answer = YES
67 Correct 130 ms 18868 KB answer = YES
68 Correct 120 ms 18684 KB answer = YES
69 Correct 119 ms 18728 KB answer = YES
70 Correct 204 ms 23288 KB answer = YES
71 Correct 123 ms 19000 KB answer = YES
72 Correct 152 ms 19336 KB answer = YES
73 Correct 137 ms 19392 KB answer = YES
74 Correct 89 ms 16584 KB answer = YES
75 Correct 60 ms 16068 KB answer = NO
76 Correct 22 ms 12888 KB answer = YES
77 Correct 41 ms 13992 KB answer = YES
78 Correct 60 ms 15180 KB answer = YES
79 Correct 123 ms 18356 KB answer = YES
80 Correct 92 ms 16540 KB answer = YES
81 Correct 93 ms 17904 KB answer = NO
82 Correct 149 ms 19100 KB answer = YES
83 Correct 143 ms 18956 KB answer = YES
84 Correct 159 ms 19032 KB answer = YES
85 Correct 127 ms 18908 KB answer = YES
86 Correct 122 ms 18860 KB answer = YES
87 Correct 99 ms 17840 KB answer = NO
88 Correct 145 ms 19176 KB answer = YES
89 Correct 148 ms 18760 KB answer = YES
90 Correct 138 ms 18740 KB answer = YES
91 Correct 144 ms 18684 KB answer = YES
92 Correct 69 ms 15836 KB answer = YES
93 Correct 71 ms 15940 KB answer = YES
94 Correct 111 ms 18244 KB answer = NO
95 Correct 92 ms 17608 KB answer = NO
96 Correct 242 ms 23480 KB answer = YES
97 Correct 84 ms 18112 KB answer = NO