Submission #1326878

#TimeUsernameProblemLanguageResultExecution timeMemory
1326878bearrbearrGraph (BOI20_graph)C++20
100 / 100
185 ms25384 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...