Submission #932115

#TimeUsernameProblemLanguageResultExecution timeMemory
932115Darren0724Stranded Far From Home (BOI22_island)C++17
0 / 100
189 ms68256 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define LCBorz ios_base::sync_with_stdio(false); cin.tie(0); #define all(x) x.begin(), x.end() const int N=200005; const int INF=1e18; const int mod=1e9+9; vector<int> pa(N); int Find(int k){ return (pa[k]==k?k:pa[k]=Find(pa[k])); } void onion(int a,int b,vector<int> &pw){ a=Find(a),b=Find(b); if(a==b)return; pa[a]=b; pw[b]+=pw[a]; } int cnt1=0; void dfs(int k,int flag,vector<int> &can,vector<int> adj[]){ can[k]&=flag; for(int j:adj[k]){ dfs(j,can[k],can,adj); } } int32_t main() { LCBorz; iota(all(pa),0); int n,m;cin>>n>>m; vector<int> v(N),pw(N),use(N); vector<int> adj[N],can(N,1),g[N],ing(N); vector<pair<int,int>> t; for(int i=1;i<=n;i++){ cin>>v[i];pw[i]=v[i]; t.push_back({v[i],i}); } for(int i=0;i<m;i++){ int a,b;cin>>a>>b; adj[a].push_back(b); adj[b].push_back(a); } sort(all(t)); for(auto [_,i]:t){ for(int j:adj[i]){ if(!use[j])continue; int t=Find(j); if(pw[t]<v[i])can[j]=0; if(!ing[t]){ ing[t]=1; g[i].push_back(t); } } for(int j:adj[i]){ if(use[j])ing[Find(j)]=0; } for(int j:adj[i]){ if(use[j])onion(j,i,pw); } use[i]=1; } dfs(v[n-1],1,can,g); for(int i=1;i<=n;i++){ cout<<can[i]; } cout<<endl; 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...