# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
342920 | 2021-01-03T08:24:33 Z | mjhmjh1104 | Graph (BOI20_graph) | C++14 | 2 ms | 2668 KB |
#include <cstdio> #include <vector> #include <algorithm> using namespace std; int n, m; int a[100006], c[100006]; bool visited[100006]; vector<pair<int, int>> adj[100006]; vector<double> v; void dfs(int x, int prev = -1) { visited[x] = true; for (auto &i: adj[x]) if (i.first != prev) { if (!visited[i.first]) { a[i.first] = -a[x]; c[i.first] = i.second - c[x]; dfs(i.first, x); } else { if (a[i.first] + a[x] == 0) { if (c[i.first] + c[x] != i.second) { puts("NO"); exit(0); } } else v.push_back((double)(i.second - c[i.first] - c[x]) / (a[i.first] + a[x])); } } } double f(double x) { double res = 0; for (int i = 0; i < n; i++) res += abs(a[i] * x + c[i]); return res; } int main() { scanf("%d%d", &n, &m); while (m--) { int u, v, c; scanf("%d%d%d", &u, &v, &c); u--, v--; adj[u].push_back({ v, c }); adj[v].push_back({ u, c }); } a[0] = 1, c[0] = 0; dfs(0); if (v.empty()) { puts("YES"); double l = -2000, r = 2000; while (r - l > 0.000000001) { double p = (l + l + r) / 3; double q = (l + r + r) / 3; if (f(p) < f(q)) r = q; else l = p; } for (int i = 0; i < n; i++) printf("%.10f ", a[i] * l + c[i]); } else { sort(v.begin(), v.end()); v.erase(unique(v.begin(), v.end()), v.end()); if (v.size() != 1) puts("NO"); else { puts("YES"); for (int i = 0; i < n; i++) printf("%.10f ", a[i] * v[0] + c[i]); } } }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 2668 KB | answer = YES |
2 | Correct | 2 ms | 2668 KB | answer = YES |
3 | Correct | 2 ms | 2668 KB | answer = YES |
4 | Correct | 2 ms | 2668 KB | answer = NO |
5 | Incorrect | 2 ms | 2668 KB | Sum of endpoints for edge (5; 3) differs from the expected value 2. |
6 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 2668 KB | answer = YES |
2 | Correct | 2 ms | 2668 KB | answer = YES |
3 | Correct | 2 ms | 2668 KB | answer = YES |
4 | Correct | 2 ms | 2668 KB | answer = NO |
5 | Incorrect | 2 ms | 2668 KB | Sum of endpoints for edge (5; 3) differs from the expected value 2. |
6 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 2668 KB | answer = YES |
2 | Correct | 2 ms | 2668 KB | answer = YES |
3 | Correct | 2 ms | 2668 KB | answer = YES |
4 | Correct | 2 ms | 2668 KB | answer = NO |
5 | Incorrect | 2 ms | 2668 KB | Sum of endpoints for edge (5; 3) differs from the expected value 2. |
6 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 2668 KB | answer = YES |
2 | Correct | 2 ms | 2668 KB | answer = YES |
3 | Correct | 2 ms | 2668 KB | answer = YES |
4 | Correct | 2 ms | 2668 KB | answer = NO |
5 | Incorrect | 2 ms | 2668 KB | Sum of endpoints for edge (5; 3) differs from the expected value 2. |
6 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 2668 KB | answer = YES |
2 | Correct | 2 ms | 2668 KB | answer = YES |
3 | Correct | 2 ms | 2668 KB | answer = YES |
4 | Correct | 2 ms | 2668 KB | answer = NO |
5 | Incorrect | 2 ms | 2668 KB | Sum of endpoints for edge (5; 3) differs from the expected value 2. |
6 | Halted | 0 ms | 0 KB | - |