Submission #1078834

#TimeUsernameProblemLanguageResultExecution timeMemory
1078834Faisal_SaqibComparing Plants (IOI20_plants)C++17
0 / 100
3 ms5204 KiB
#include "plants.h" #include <bits/stdc++.h> using namespace std; const int N=200100; int cp[N],od[N],deg[N]; vector<int> ma[N]; void init(int k, std::vector<int> r) { int n=r.size(); for(int i=0;i<n;i++) { int j=(i+1)%n; if(r[i]==0) { // j -> i deg[i]++; ma[j].push_back(i); } else { // i -> j deg[j]++; ma[i].push_back(j); } } int cnt=0; for(int i=0;i<n;i++) { if(deg[i]==0 and cp[i]==0) { cnt++; queue<int> cur; cur.push(i); int jp=0; while(cur.size()>0) { int f=cur.front(); cur.pop(); cp[f]=cnt; od[f]=jp; jp++; for(auto s:ma[f]) { deg[s]--; if(deg[s]==0) cur.push(s); } } } } return; } int compare_plants(int x, int y) { if(cp[x]==cp[y]) { if(od[x]==od[y])return 0; return ((od[x]<od[y])?-1:1); } else 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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...