제출 #642462

#제출 시각아이디문제언어결과실행 시간메모리
642462CattlemansRanchStranded Far From Home (BOI22_island)C++14
100 / 100
136 ms25828 KiB
#include<bits/stdc++.h> using namespace std; typedef pair<int,int> pii; typedef pair<int,pii> piii; const int MAXN=200005; int par[MAXN]; long long a[MAXN]; vector<int> all[MAXN]; vector<piii> edges; int find(int x){ if(par[x]==x)return par[x]; return par[x]=find(par[x]); } int main(){ ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0); int n,m,u,v; cin >> n >> m; for(int i=1;i<=n;i++){ cin >> a[i]; par[i]=i; all[i].push_back(i); } for(int i=1;i<=m;i++){ cin >> u >> v; if(a[u]>a[v])edges.push_back({a[u],{u,v}}); else edges.push_back({a[v],{v,u}}); } sort(edges.begin(),edges.end()); for(auto isi : edges){ int aa=find(isi.second.first),bb=find(isi.second.second); if(aa==bb)continue; if(a[bb]>=isi.first){ if(all[aa].size()<all[bb].size())all[aa].swap(all[bb]); for(auto isi : all[bb])all[aa].push_back(isi); } a[aa]+=a[bb]; par[bb]=aa; } string ans=""; for(int i=0;i<n;i++)ans+='0'; for(auto isi : all[find(1)]){ ans[isi-1]='1'; } cout << ans << '\n'; return 0; }
#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...