Submission #810974

#TimeUsernameProblemLanguageResultExecution timeMemory
810974owoovoStranded Far From Home (BOI22_island)C++17
15 / 100
335 ms524288 KiB
#include<bits/stdc++.h> #define ll long long using namespace std; ll n,m,tag[200010],subsum[200010],dsu[200010],ans[200010]; vector<ll> e[200010],te[200010]; pair<ll,ll> val[200010]; int f(int now){ if(dsu[now]!=now) dsu[now]=f(dsu[now]); return dsu[now]; } void dfs(int now,int x){ tag[now]==1?ans[now]=0:ans[now]=x; for(auto ne:te[now]){ dfs(ne,ans[now]); } } int main(){ ios::sync_with_stdio(0); cin.tie(0); cin>>n>>m; int last=1; for(int i=1;i<=n;i++){ cin>>val[i].first; val[i].second=i; dsu[i]=i; subsum[i]=val[i].first; } for(int i=0;i<m;i++){ int a,b; cin>>a>>b; if(val[a].first>val[b].first)e[a].push_back(b); else e[b].push_back(a); } sort(&val[1],&val[n+1]); for(int i=1;i<=n;i++){ ll x=val[i].second; ll y=val[i].first; for(auto ne:e[x]){ ne=f(ne); if(ne==x)continue; te[x].push_back(ne); if(subsum[ne]<y)tag[ne]=1; dsu[ne]=x; subsum[x]+=subsum[ne]; } } dfs(val[n].second,1); for(int i=1;i<=n;i++)cout<<ans[i]; cout<<"\n"; return 0; }

Compilation message (stderr)

island.cpp: In function 'int main()':
island.cpp:21:9: warning: unused variable 'last' [-Wunused-variable]
   21 |     int last=1;
      |         ^~~~
#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...