제출 #1333863

#제출 시각아이디문제언어결과실행 시간메모리
1333863ThylOneSeptember (APIO24_september)C++17
100 / 100
120 ms10872 KiB
#include "september.h"
#include <bits/stdc++.h>
#include <vector>
using namespace std;

const int maxN = 1e5+1;

vector<int> links[maxN];
vector<bool> rem(maxN);

vector<int> step(maxN);
int counter[5];
void getSub(int node, int token, int m){
	if(rem[node])return;
	rem[node] = true;
	step[node] = token;

	//on compte en plus
	for(int i = 0 ; i < m ; i++)counter[i]++;
	for(int u:links[node])
		getSub(u, token, m);
}
int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S) {
	for(int i = 0 ; i < N ; i++)links[i].clear();
	for(int i =  1 ;  i < N ; i++){
		links[F[i]].push_back(i);
	}
	fill(rem.begin(), rem.end(), false);
	fill(step.begin(), step.end(), 0);
	
	fill(counter, counter+5, 0);

	unordered_set<int> SET;
	int act = 0;
	int ans = 0;
	while(act < N -1){
		ans++;
		do{
			for(int j = 0 ; j <M ; j++)getSub(S[j][act], ans, M);
			for(int j = 0 ; j < M ; j++)counter[j]--;
			act++;

		}while(counter[0] || counter[1] ||counter[2]||counter[3]||counter[4]);
	}
	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...