Submission #1160077

#TimeUsernameProblemLanguageResultExecution timeMemory
1160077kiwimsySeptember (APIO24_september)C++20
0 / 100
1 ms392 KiB
#include "september.h"
#include <bits/stdc++.h>
using namespace std;

vector<vector<int>> ch;
vector<bool> vis, passed;
queue<int> q;

void dfs(int node){
	vis[node] = true;
	for(int i : ch[node]){
		if(!vis[i]) dfs(i);
	}
	q.push(node);
}
/*
1
5 2
0 0 1 1
1 2 3 4
4 1 2 3

*/

int solve(int N, int M, vector<int> F, vector<vector<int>> S) {
	ch.resize(N);
	int k, ans = N;
	for(int i = 1; i < N-1; i++){
		ch[F[i]].push_back(i);
	}
	for(vector<int> i : S){
		k = 0;
		vis.assign(N, false);
		passed.assign(N, false);
		for(int j : i){
			passed[j] = true;
			if(q.empty()) k++;
			if(!vis[j]) dfs(j);
			if(passed[q.front()]){
				while(passed[q.front()]) q.pop();
			}
		}
		ans = min(ans, k);
	}
	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...