제출 #932173

#제출 시각아이디문제언어결과실행 시간메모리
932173Muhammad_AneeqGraph (BOI20_graph)C++17
58 / 100
645 ms17100 KiB
/* بسم الله الرحمن الرحيم Author: (:Muhammad Aneeq:) */ #include <iostream> #include <vector> #include <bitset> #include <queue> using namespace std; int const N=1e5+10; vector<pair<int,int>>nei[N]={}; float val[N]={},ansval[N]={}; bitset<N>vis; vector<vector<int>>f; float mx=1e9+10; int n,m; inline bool bfs(int u) { queue<int>g; g.push(u); while (g.size()) { int u=g.front(); g.pop(); for (auto [i,j]:nei[u]) { if (val[i]==-1e9) { val[i]=j-val[u]; g.push(i); } else if (val[i]+val[u]!=j) return 0; } } return 1; } void dfs(int x) { vis[x]=1; f.back().push_back(x); for (auto [i,j]:nei[x]) { if (!vis[i]) dfs(i); } } inline void solve() { cin>>n>>m; for (int i=0;i<m;i++) { int u,v,t; cin>>u>>v>>t; nei[u].push_back({v,t}); nei[v].push_back({u,t}); } for (int i=1;i<=n;i++) { if (!vis[i]) { f.push_back({}); dfs(i); } } for (int i=1;i<=n;i++) { val[i]=-1e9; ansval[i]=-1e9; } for (auto i:f) { int r=i[0]; float mx=1e9+10; for (float j=-75;j<=25;j+=0.5) { val[r]=j; if (bfs(r)) { float z=0; for (auto k:i) z+=abs(val[k]); if (z<mx) { mx=z; for (auto k:i) ansval[k]=val[k]; } } for (auto k:i) val[k]=-1e9; } if (mx==1e9+10) { cout<<"NO\n";return; } } for (int i=1;i<=n;i++) { if (ansval[i]==-1e9) { cout<<"NO\n";return; } } cout<<"YES\n"; for (int i=1;i<=n;i++) cout<<ansval[i]<<' '; cout<<endl; } int main() { ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL); solve(); }
#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...