#include <bits/stdc++.h>
using namespace std;
#define int long long
#define ii pair<int,int>
#define fir first
#define sec second
#define pb push_back
const int maxn=1e5+2;
int n,m;
vector<ii>adj[maxn];
bool vis[maxn];
int col[maxn],val[maxn];
vector<int>msk;
bool bip;
int sh;
void dfs(int cur){
vis[cur]=true;
msk.pb(cur);
for(auto [v,w]: adj[cur]){
if(vis[v]){
if(col[v]==col[cur]){
bip=false;
sh=(w-(val[cur]+val[v]))/2;
//cout<<v<<" "<<cur<<" "<<sh<<endl;
sh*=col[cur];
}
}
else{
col[v]=-col[cur];
val[v]=w-val[cur];
dfs(v);
}
}
}
int ans[maxn];
signed main(){
cin>>n>>m;
for(int q=1;q<=m;q++){
int u,v,w;
cin>>u>>v>>w;
w*=2;
adj[u].pb({v,w});
adj[v].pb({u,w});
}
for(int q=1;q<=n;q++){
if(vis[q])continue;
msk.clear(),bip=true,sh=0;
col[q]=1;
dfs(q);
if(bip){
vector<int>isi;
for(auto x : msk){
isi.pb(-val[x]*col[x]);
}
sort(isi.begin(),isi.end());
sh=isi[isi.size()/2];
}
for(auto x : msk){
for(auto [y,w] : adj[x]){
int vx=val[x]+col[x]*sh,vy=val[y]+col[y]*sh;
if(vx+vy!=w){
cout<<"NO"<<endl; return 0;
}
}
ans[x]=val[x]+col[x]*sh;
}
}
cout<<"YES"<<endl;
for(int q=1;q<=n;q++){
double hmm=ans[q]/2.0;
cout<<fixed<<setprecision(2)<<hmm<<' ';
}
cout<<endl;
}
| # | 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... |