This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#define x first
#define y second
using namespace std;
using ll = long long;
using ld = long double;
using PLL = pair<ll, ll>;
using PDD = pair<ld, ld>;
inline void DIE(){ cout << "NO"; exit(0); }
int N, M;
vector<PLL> G[101010];
PDD A[101010];
bool C[101010];
vector<double> Fix;
vector<ll> Can, Vis;
double R[101010];
void DFS(int v, int mul, ll add){
if(!C[v]) A[v] = {mul, add};
else if(A[v].x == mul && A[v].y == add) return;
else if(A[v].x == mul && A[v].y != add) DIE();
else{
Fix.push_back(1.0 * (A[v].y - add) / (mul - A[v].x));
return;
}
Vis.push_back(v); C[v] = true;
if(mul == 1) Can.push_back(-add);
else Can.push_back(add);
for(auto [i,w] : G[v]) DFS(i, -mul, w-add);
}
int main(){
ios_base::sync_with_stdio(false); cin.tie(nullptr);
cin >> N >> M;
for(int i=1; i<=M; i++){
int s, e, x; cin >> s >> e >> x;
G[s].emplace_back(e, x);
G[e].emplace_back(s, x);
}
for(int i=1; i<=N; i++){
if(C[i]) continue;
Fix.clear(); Can.clear(); Vis.clear();
DFS(i, 1, 0);
sort(Can.begin(), Can.end());
sort(Fix.begin(), Fix.end());
Fix.erase(unique(Fix.begin(), Fix.end()), Fix.end());
if(Fix.size() > 1) DIE();
double X = Fix.size() == 1 ? Fix[0] : Can[Can.size()/2];
for(auto j : Vis) R[j] = A[j].x * X + A[j].y;
}
cout << "YES\n";
for(int i=1; i<=N; i++) cout << R[i] << " ";
}
Compilation message (stderr)
Graph.cpp: In function 'void DFS(int, int, ll)':
Graph.cpp:31:14: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
31 | for(auto [i,w] : G[v]) DFS(i, -mul, w-add);
| ^
# | 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... |