Submission #1087470

#TimeUsernameProblemLanguageResultExecution timeMemory
1087470KALARRYSeptember (APIO24_september)C++17
0 / 100
2 ms3084 KiB
//chockolateman #include<bits/stdc++.h> using namespace std; int in_deegree[100005][10],positions[10]; vector<int> children[100005]; bool removed[100005][10]; void init(int N,int M) { for(int i = 0 ; i < M ; i++) { positions[i] = 0; for(int j = 0 ; j < N ; j++) { in_deegree[j][i] = 0; children[j].clear(); removed[j][i] = false; } } } int solve(int N, int M, std::vector<int> F,std::vector<std::vector<int>> S) { for(int i = 1 ; i < N ; i++) for(int j = 0 ; j < M ; j++) in_deegree[F[i]][j]++; int counter = 0; while(positions[0] != N-1) { counter++; stack<int> removal_list; for(int i = 0 ; i < M ; i++) removal_list.push(S[i][positions[i]]); while(!removal_list.empty()) { int v = removal_list.top(); removal_list.pop(); for(int i = 0 ; i < M ; i++) if(!removed[v][i]) { while(S[i][positions[i]] != v) { removed[S[i][positions[i]]][i] = true; removal_list.push(S[i][positions[i]++]); } positions[i]++; removed[v][i] = true; in_deegree[F[v]][i]--; if(in_deegree[v][i]==0) continue; for(auto u : children[v]) { if(removed[u][i]) continue; in_deegree[v][i]--; removal_list.push(u); } } } } init(N,M); return counter; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...