Submission #1194744

#TimeUsernameProblemLanguageResultExecution timeMemory
1194744Mousa_AboubakerSeptember (APIO24_september)C++20
0 / 100
1095 ms320 KiB
#include "september.h"
#include <bits/stdc++.h>
using namespace std;

int solve(int N, int M, vector<int> F, vector<vector<int>> S)
{
	vector<vector<int>> adj(N, vector<int>());
	for(int i = 1; i < N; i++)
		adj[F[i]].push_back(i);
	vector<bool> vis(N, false);
	vector<vector<int>> pos(M, vector<int>(N));
	for(int i = 0; i < M; i++)
		for(int j = 0; j < N - 1; j++)
			pos[i][S[i][j]] = j;
	int K = 0;
	int mx = 0;
	auto dfs = [&](auto self, int u) -> void
	{
		if(vis[u])
			return;
		for(int i = 0; i < M; i++)
			if(mx < pos[i][u])
				mx = pos[i][u];
		vis[u] = true;
		for(auto i: adj[u])
			self(self, i);
	};
	for(int i = 0; i < N - 1;)
	{
		while(i <= mx)
		{
			dfs(dfs, S[0][i]);
			i++;
		}
		K++;
	}
	return K;
}
#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...