Submission #1271164

#TimeUsernameProblemLanguageResultExecution timeMemory
1271164BigBadBullySeptember (APIO24_september)C++20
75 / 100
1096 ms14568 KiB
#include "september.h" #include <bits/stdc++.h> #define pii pair<int,int> #define ff first #define ss second using namespace std; pii p = {109,59}; pii mod = {1e9+7,1e9+9}; int exp(int x,int a,int mod) { int ans = 1; for (;a>0;a/=2,x=x*x%mod) if(a%2) ans=ans*x%mod; return ans; } int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S) { int n=N,m=M; auto par = F; auto s = S; vector<int> del(n,0); vector<vector<int>> graph(n); for (int i = 1; i < n; i++) graph[par[i]].push_back(i); int cnt = 0; function<void(int)> dfs = [&](int cur) { if (del[cur])return; cnt++; del[cur] =1; for(int a : graph[cur]) dfs(a); }; vector<set<int>> mile(m); int ans = 0; for (int i = 0; i < n-1; i++) { dfs(s[0][i]); bool bad = 0; for(int j =0;j < m; j++) mile[j].insert(s[j][i]); for (int j = 1; j <m;j++) if(mile[j]!=mile[j-1]) bad = 1; if(cnt==i+1 &&!bad) 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...