Submission #1203726

#TimeUsernameProblemLanguageResultExecution timeMemory
1203726fadyscubeSeptember (APIO24_september)C++20
75 / 100
1095 ms12580 KiB
#include "september.h" #include <vector> #include <bits/stdc++.h> using namespace std; int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S) { vector<set<int>> s(M); int k = 0; int nodes = N; int degs = nodes-1; vector<int> deg(N, 1); deg[0]--; for (int i = 1; i < N; i++) deg[F[i]]++; vector<vector<int>> adj(N); for (int j = 1; j < N; j++) adj[F[j]].push_back(j); for (int i = 0; i < N-1; i++) { bool yes = true; nodes--; degs -= deg[S[0][i]]; //cout << yes << " " << S[0][i] << " " << deg[S[0][i]] << endl; deg[F[S[0][i]]]--; for (int j = 0; j < adj[S[0][i]].size(); j++) deg[adj[S[0][i]][j]]--; for (int j = 0; j < M; j++) { s[j].insert(S[j][i]); if (j > 0 && nodes - degs == 1 && s[j] != s[j-1]) yes = false; } if (nodes - degs == 1 && yes) k++; } return k; }
#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...