제출 #1155739

#제출 시각아이디문제언어결과실행 시간메모리
1155739blackslex9월 (APIO24_september)C++20
100 / 100
147 ms10760 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) { int n = N, m = M; vector<vector<int>> v(n, vector<int>()); vector<vector<bool>> f(m, vector<bool>(n)); vector<bool> f2(n); multiset<int> ms; for (int i = 1; i < n; i++) { v[F[i]].emplace_back(i); } auto dfs = [&] (auto &&dfs, int cur, int par, int idx) -> void { if (f[idx][cur]) return; f[idx][cur] = 1; if (!f2[cur]) { f2[cur] = 1; for (int i = 0; i < m; i++) ms.emplace(cur); } for (auto &e: v[cur]) { if (par == e) continue; dfs(dfs, e, cur, idx); } }; int ans = 0; for (int i = 0; i < n - 1; i++) { for (int j = 0; j < m; j++) dfs(dfs, S[j][i], -1, j); for (int j = 0; j < m; j++) ms.erase(ms.find(S[j][i])); if (ms.empty()) ans++; } return ans; return 0; }
#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...