제출 #1366418

#제출 시각아이디문제언어결과실행 시간메모리
1366418hihi0908September (APIO24_september)C++20
100 / 100
105 ms19104 KiB
#include "september.h"

#include <bits/stdc++.h>
using namespace std;

void dfs(int u, vector<vector<int>> &G, vector<int> &mn, vector<int> &pos){
	mn[u] = pos[u];
	for(int &v : G[u]){
		dfs(v, G, mn, pos);
		mn[u] = max(mn[u], mn[v]);
	}
}

int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S) {
	vector<vector<int>> G(N);
	for(int i = 0; i < N; i++){
		if(F[i] == -1)	continue;
		G[F[i]].push_back(i);
	}

	vector<int> pos(N, 0);
	vector<int> mn(N);
	
	for(int i = 0; i < M; i++){
		for(int j = 0; j < N - 1; j++)	pos[S[i][j]] = max(pos[S[i][j]], j);
	}
	dfs(0, G, mn, pos);
	
	int ans = N;
	for(int j = 0; j < M; j++){
		int cnt = 0;
		int r = 0;
		for(int i = 0; i < N - 1; i++){
			r = max(r, mn[S[j][i]]);
			
			if(r <= i)	cnt++;
		}

		ans = min(ans, cnt);
	}

	return ans;
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…