Submission #1154362

#TimeUsernameProblemLanguageResultExecution timeMemory
1154362lrnnzSeptember (APIO24_september)C++17
55 / 100
1093 ms8296 KiB
#include <bits/stdc++.h> using namespace std; int solve(int N, int M, vector<int> F, vector<vector<int>> S){ vector<vector<int>> children(N, vector<int>()); for (int i = 1; i < F.size(); i++){ children[F[i]].push_back(i); } int ans = 0; int diffs = 0; int minleaf = 0; vector<int> cnts(N, 0); vector<bool> visited(N, false); for (int i = 0; i < N-1; i++){ for (auto x : S){ int node = x[i]; if (!visited[node]){ queue<int> q; q.push(node); visited[node] = true; minleaf++; while (q.size()){ int newnode = q.front(); q.pop(); for (auto y : children[newnode]){ if (!visited[y]){ minleaf++; visited[y] = true; q.push(y); } } } } cnts[node]++; if (cnts[node] == 1){ diffs++; } if (cnts[node] == M){ diffs--; } } if (i >= minleaf-1 && diffs == 0) 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...