Submission #1197330

#TimeUsernameProblemLanguageResultExecution timeMemory
1197330toast12September (APIO24_september)C++20
55 / 100
1095 ms1020 KiB
#include "september.h" #include <vector> #include <map> #include <queue> using namespace std; int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S) { vector<vector<int>> adj(N); for (int i = 1; i < N; i++) { adj[i].push_back(F[i]); adj[F[i]].push_back(i); } int ans = 0; map<int, int> freq, m; m[0] = N-1; for (int i = 0; i < N-1; i++) { for (int j = 0; j < M; j++) { m[freq[S[j][i]]]--; freq[S[j][i]]++; m[freq[S[j][i]]]++; } if (m[0]+m[M] == N-1) { vector<bool> visited(N); queue<int> q; q.push(0); while (!q.empty()) { int cur = q.front(); q.pop(); if (visited[cur]) continue; if (freq[cur] == M) continue; visited[cur] = true; for (auto e : adj[cur]) { if (!visited[e]) q.push(e); } } bool poss = true; for (int j = 0; j < N; j++) { if (!freq[j] && !visited[j]) { poss = false; break; } } if (poss) 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...