제출 #1151395

#제출 시각아이디문제언어결과실행 시간메모리
1151395jasonic9월 (APIO24_september)C++20
100 / 100
268 ms15084 KiB
#include "september.h" #include <bits/stdc++.h> using namespace std; int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S) { // we iteratively go through each unordered_map<long long, vector<long long>> adjList; for(long long i = 1; i < N; i++) { adjList[F[i]].push_back(i); } unordered_set<long long> seen; vector<long long> counts(N, 0); long long ans = 0; for(long long i = 0; i < N-1; i++) { for(long long j = 0; j < M; j++) { if(counts[S[j][i]] == 0) { // bfs to find which other nodes we have to track stack<long long> bfs; bfs.emplace(S[j][i]); while(bfs.size()) { long long curr = bfs.top(); bfs.pop(); for(auto k : adjList[curr]) { if(counts[k] == 0) { bfs.emplace(k); } } seen.emplace(curr); } } counts[S[j][i]]++; if(counts[S[j][i]] == M) { seen.erase(S[j][i]); } } if(seen.empty()) 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...