제출 #602729

#제출 시각아이디문제언어결과실행 시간메모리
602729isaachewStranded Far From Home (BOI22_island)C++17
20 / 100
510 ms24292 KiB
#include <bits/stdc++.h> /* Tie colours are a connected component ST1: simulate with priority queue in O(n^2) ST2: Rooted tree; if a subtree manages to number more than their parent, carry on to the parent (small-to-large merging / DSU on tree?) Subtree sums + ST3: Line The only shape an area can make is a segment ST4: Two neighbouring villages with the same population can be treated exactly the same 35p? */ int n,m; std::vector<std::vector<int>> edges; std::vector<int> pops; std::vector<long long> sts; std::vector<int> result; long long dfs(int cur){ long long csts=pops[cur]; for(int i:edges[cur]){ if(i<cur)continue; csts+=dfs(i); } sts[cur]=csts; return csts; } void dfs2(int cur){ result[cur]=1; for(int i:edges[cur]){ if(i<cur)continue; if(sts[i]>=pops[cur])dfs2(i); } } int main(){ std::cin>>n>>m; edges.resize(n); result.resize(n,0); for(int i=0;i<n;i++){ int x; std::cin>>x; pops.push_back(x); } bool st3=1; for(int i=0;i<m;i++){ int a,b; std::cin>>a>>b; a--,b--; if(a-b>1||a-b<-1)st3=0; edges[a].push_back(b); edges[b].push_back(a); } if(n<=2000&&m<=2000){ for(int i=0;i<n;i++){ //std::cout<<i<<'\n'; std::set<std::pair<int,int>> pq;//priority queue but least std::vector<int> visited(n,0); long long cursize=pops[i]; for(int j:edges[i]){ pq.insert({pops[j],j}); } visited[i]=1; bool result=1; while(!pq.empty()){ //std::cout<<i<<' '<<cursize<<'\n'; int cur=(*pq.begin()).second; pq.erase({pops[cur],cur}); if(pops[cur]>cursize){ result=0; break; } visited[cur]=1; cursize+=pops[cur]; for(int j:edges[cur]){ if(!visited[j])pq.insert({pops[j],j}); } } std::cout<<result; } std::cout<<'\n'; return 0; } if(0&&st3){ }else{ sts.resize(n,0); dfs(0); dfs2(0); } for(int i:result){ std::cout<<i; } std::cout<<'\n'; }
#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...