Submission #1160041

#TimeUsernameProblemLanguageResultExecution timeMemory
1160041jer0339월 (APIO24_september)C++20
100 / 100
121 ms11748 KiB
#include "september.h" #include <algorithm> #include <utility> #include <vector> using namespace std; int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S) { vector<int> allowed (N-1, 1); vector<int> occurrences (N, 0); int bad = 0; for (int i=0; i<(N-1); i++) { for (int j=0; j<M; j++) { occurrences[S[j][i]]++; if (occurrences[S[j][i]] == 1) bad++; if (occurrences[S[j][i]] == M) bad--; } if (bad>0) allowed[i]=0; } vector< vector<int> > children (N); for (int i=1; i<N; i++) { children[F[i]].push_back(i); } vector<int> visited (N, 0); //0 unvisited //1 visited //2 visited my parent int count2 = 0; int answer = 0; for (int i=0; i<(N-1); i++) { int curr = S[0][i]; if (visited[curr]==2) count2--; visited[curr]=1; for (int j: children[curr]) if (visited[j]!=1) { visited[j]=2; count2++; } if ((count2==0) and (allowed[i]==1)) answer++; } return answer; }
#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...