제출 #1368480

#제출 시각아이디문제언어결과실행 시간메모리
1368480tapilyoca9월 (APIO24_september)C++20
0 / 100
1 ms580 KiB
#include "september.h"

#include<iostream>
#include<algorithm>
#include<vector>
#include<set>
#include<map>

using namespace std;

using ll = long long;
template<typename T>
using vec = vector<T>;
using vll = vec<ll>;
using vvll = vec<vll>;
using str = string;
using pll = pair<ll,ll>;
#define pb push_back
#define sps << " " <<
#define sp << " "
#define fi first
#define se second
#define nl << endl

vvll kids;
vec<bool> vis;
set<ll> waiting;
map<ll,ll> freq;

void dfs(ll u) {
	waiting.insert(u);
	for(ll &v : kids[u]) {
		if(vis[v]) continue;
		vis[v] = 1;
		dfs(v);
	}
}

int solve(int N, int M, vec<int> F, vec<vec<int>> S) {
	kids.clear();
	kids.resize(N);
	vis.assign(N,0);

	for(int i = 1; i < N; i++) {
		kids[F[i]].pb(i);
	}

	ll ans = 0;
	for(int i = 0; i < N-1; i++) {
		for(int j = 0; j < M; j++) {
			ll at = S[j][i];
			if(!vis[at]) dfs(at);
			vis[at] = 1;
			freq[at]++;
			
			if(freq[at] == M) {
				waiting.erase(at);
			}

		}
		if(waiting.size() == 0) ans++;

	}

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