Submission #975032

#TimeUsernameProblemLanguageResultExecution timeMemory
975032vjudge1Stranded Far From Home (BOI22_island)C++17
0 / 100
83 ms9156 KiB
#include<bits/stdc++.h> using namespace std; const int NN=2e5+1; long long node[NN]; int par[NN]; bitset<NN> ans; int fp(int i){ if(i==par[i]) return i; int p=fp(par[i]); if(ans[i]) ans[i]=ans[par[i]]; par[i]=p; return p; } struct edl { int a,b; bool operator < (const edl &rhs) const{ return max(node[a],node[b])<max(node[rhs.a],node[rhs.b]); } }; vector<edl> v; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); int n,m,a,b; cin>>n>>m; for(int i=1;i<=n;i++) cin>>node[i],par[i]=i; while(m--){ cin>>a>>b; v.push_back({a,b}); } sort(v.begin(),v.end()); ans.set(); for(auto i:v){ int p1=fp(i.a); int p2=fp(i.b); if(p1==p2) continue; // cout<<p1<<" "<<p2<<"\n"; if(node[p1]<node[p2]) swap(p1,p2); if(node[p1]>node[p2]) ans[p2]=0; par[p2]=p1; node[p1]+=node[p2]; } for(int i=1;i<=n;i++){ fp(i); cout<<ans[i]; } }
#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...