#include <bits/stdc++.h>
using namespace std;
using pii = pair<int, int>;
#define X first
#define Y second
#define SZ(x) int(x.size())
#define all(x) x.begin(), x.end()
const int MXN = 2e5+5;
int n, m, fr[MXN], to[MXN], w[MXN], rt[MXN];
vector<int> g[MXN], roots, vec[MXN];
pii val[MXN];
bool vis[MXN], mark[MXN], fnd[MXN], xf[MXN];
void dfs(int v) {
vec[rt[v]].push_back(val[v].Y*(val[v].X>0 ? -1 : 1));
vis[v] = 1;
for(int i : g[v]) {
int u = v^fr[i]^to[i];
if(vis[u]) continue;
val[u].X = -val[v].X;
val[u].Y = -val[v].Y+w[i];
mark[i] = 1;
rt[u] = rt[v];
dfs(u);
}
}
int sgn(int x) { return x>0 ? 1 : (x<0 ? -1 : 0); }
int32_t main() {
cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(0);
cin >> n >> m;
for(int i=1; i<=m; i++) {
cin >> fr[i] >> to[i] >> w[i]; w[i] *= 2;
g[fr[i]].push_back(i);
g[to[i]].push_back(i);
}
for(int root=1; root<=n; root++) if(!vis[root]) {
val[root] = {root, 0};
rt[root] = root;
dfs(root);
roots.push_back(root);
}
for(int i=1; i<=m; i++) if(!mark[i]) {
if(val[fr[i]].X+val[to[i]].X) {
int y = (w[i]-val[fr[i]].Y-val[to[i]].Y) / (sgn(val[fr[i]].X) + sgn(val[to[i]].X));
if(!fnd[rt[fr[i]]] || (fnd[rt[fr[i]]] && y==xf[rt[fr[i]]])) {
fnd[rt[fr[i]]] = 1;
xf[rt[fr[i]]] = y;
}
else {
cout << "NO\n";
return 0;
}
}
else if(val[fr[i]].Y+val[to[i]].Y!=w[i]) {
cout << "NO\n";
return 0;
}
}
cout << "YES\n";
for(int root : roots) if(!fnd[root]) {
sort(all(vec[root]));
xf[root] = vec[root][SZ(vec[root])/2];
}
for(int i=1; i<=n; i++) {
int v = sgn(val[i].X)*xf[rt[i]] + val[i].Y;
if(v<0) cout << '-', v = -v;
cout << v/2;
if(v%2) cout << ".5";
cout << ' ';
}
cout << '\n';
return 0;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |