Submission #1200888

#TimeUsernameProblemLanguageResultExecution timeMemory
1200888muhammadali_2009September (APIO24_september)C++20
100 / 100
97 ms12736 KiB
#include "september.h" #include <bits/stdc++.h> using namespace std; vector<vector<int>>g; vector<vector<int>>vis; vector<set<int>>st; void dfs(int u,int j){ vis[j][u] = 1; for(int v : g[u]){ if(!vis[j][v]){ st[j].insert(v); dfs(v, j); } } } int solve(int n, int m, std::vector<int> adj, std::vector<std::vector<int>> val) { g.assign(n, {}); st.assign(m, {}); vis.assign(m, vector<int>(n, 0)); for(int i = 1; i < n; i ++){ g[adj[i]].push_back(i); } int ans = 0, cnt = 0; vector<int>oc(n); for(int i = 0; i < n - 1; i ++){ int ok = 1; for(int j = 0; j < m; j ++){ int cur = val[j][i]; oc[cur] ++; if(oc[cur] == m)cnt ++; if(st[j].count(cur))st[j].erase(cur); else dfs(cur, j); if(st[j].size() != 0)ok = 0; } if(ok && cnt == i + 1)ans ++; } return ans; }
#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...