Submission #1135605

#TimeUsernameProblemLanguageResultExecution timeMemory
1135605Joseph0121September (APIO24_september)C++20
30 / 100
1093 ms6928 KiB
#include <bits/stdc++.h> using namespace std; const int maxn = 1e5+5; #define vt vector int N,M; int solve(int n, int m, vector<int> p, vector<vector<int>> vv){ ios_base::sync_with_stdio(0); cin.tie(NULL); N = n; M = m; vt<vt<vt<int>>> e(m,vt<vt<int>>(N+1)); vt<vt<int>> indeg(m,vt<int>(N+1,0)), indeg2(m,vt<int>(N+1,0)); vt<vt<int>> arr(m,vt<int>(N+1)); vector<set<vector<int>>> s(M); for(int i = 0;i<N;i++){ int x = p[i]; if(i == 0) continue; for(int j = 0;j<M;j++){ e[j][i].push_back(x); indeg[j][x]++; } for(int i = 0;i<M;i++){ for(int j = 0;j<N-1;j++){ arr[i][j] = vv[i][j]; } } } int ans = 0; for(int i = 0;i<N-1;i++){ bool flag = true; for(int j = 0;j<M;j++){ indeg2[j][arr[j][i]] = indeg[j][arr[j][i]]; s[j].insert({indeg[j][arr[j][i]],arr[j][i]}); while(s[j].size()){ vector<int> v = *s[j].begin(); // cout<<v[0]<<" "<<v[1]<<endl; if(v[0]!=0) break; s[j].erase(s[j].begin()); for(auto k: e[j][v[1]]){ indeg[j][k]-=1; if(indeg[j][k] == 0){ auto it = s[j].find({indeg2[j][k],k}); if(it != s[j].end()){ //when already add // cout<<"node: "<<arr[j][i]<<endl; vector<int> v2 = *it; s[j].erase(it); v2[0] = 0; s[j].insert(v2); } } } } } //check if everyone if 0 for(int j = 0;j<M;j++){ // cout<<s[j].size()<<" "; if(s[j].size()) flag = false; } // cout<<"nxt"<<endl; if(flag) ans++; } // cout<<endl; // cout<<s[0].size()<<" "<<s[1].size()<<endl; return ans; } // int main() { // // cout<<solve(5,2,{-1, 0, 0, 1, 1},{{1,2,3,4},{4,1,2,3}}); // 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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...