제출 #1197341

#제출 시각아이디문제언어결과실행 시간메모리
1197341toast129월 (APIO24_september)C++20
0 / 100
4 ms580 KiB
#include "september.h" #include <vector> #include <map> #include <queue> #include <set> using namespace std; int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S) { vector<vector<int>> adj(N); vector<int> deg(N); for (int i = 1; i < N; i++) { adj[i].push_back(F[i]); adj[F[i]].push_back(i); deg[F[i]]++; deg[i]++; } int ans = 0; map<int, int> freq, m; m[0] = N-1; int nodes = N, edges = N-1; set<int> s; 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]]]++; s.insert(S[j][i]); } if (m[0]+m[M] == N-1) { nodes -= s.size(); for (auto x : s) { int cnter = 0; for (auto e : adj[x]) { if (deg[e]) deg[e]--; else cnter++; } edges -= adj[x].size()-cnter; deg[x] = 0; } if (nodes == edges+1) { ans++; s.clear(); } } } 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...