제출 #1193859

#제출 시각아이디문제언어결과실행 시간메모리
1193859hengliaoSeptember (APIO24_september)C++20
100 / 100
111 ms10688 KiB
#include "september.h"
#include<bits/stdc++.h>
using namespace std;

#define F first
#define S second
#define pb push_back
#define vll vector<ll>
#define pll pair<ll, ll>

typedef long long ll;

namespace{
	const ll mxN=1e5+5;

	vll adj[mxN];
	bool visited[mxN];
	set<ll> st;

	void dfs(ll cur){
		if(visited[cur]) return;
		visited[cur]=1;
		// cout<<"visiting "<<cur<<'\n';
		st.insert(cur);
		for(auto &chd:adj[cur]){
			dfs(chd);
		}
	}
}

int solve(int n, int m, vector<int> p, vector<vector<int>> a) {
	st.clear();
	for(ll i=0;i<n;i++){
		adj[i].clear();
		visited[i]=0;
	}
	for(ll i=1;i<n;i++){
		adj[p[i]].pb(i);
	}
	ll ans=0;
	ll len=0;
	for(ll i=0;i<n-1;i++){
		len++;
		// cout<<"i: "<<i<<'\n';
		for(ll j=0;j<m;j++){
			dfs(a[j][i]);
		}
		if((ll) st.size()==len){
			ans++;
			// cout<<i<<'\n';
			len=0;
			st.clear();
		}
	}
	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...