제출 #1160711

#제출 시각아이디문제언어결과실행 시간메모리
1160711hyakupSplit the Attractions (IOI19_split)C++20
11 / 100
70 ms10568 KiB
#include "split.h"
#include <bits/stdc++.h>

using namespace std;

vector<vector<int>> adj;
vector<int> resp;

void dfs( int cur, int& resto, int flag ){
	if( resp[cur] != 0 || resto == 0 ) return;
	resp[cur] = flag; resto--;
	for( int viz : adj[cur] ) dfs( viz, resto, flag );
}

vector<int> find_split(int n, int a, int b, int c, vector<int> p, vector<int> q) {
	adj.resize(n);
	resp.resize(n);

	for( int i = 0; i < p.size(); i++ ){
		adj[p[i]].push_back(q[i]);
		adj[q[i]].push_back(p[i]);
	}

	vector<pair<int, int>> comps = { make_pair( a, 1 ), make_pair( b, 2 ), make_pair( c, 3 ) };
	sort( comps.begin(), comps.end() );

	dfs( 0, comps[1].first, comps[1].second );

	bool ok = false;
	for( int i = 0; i < n; i++ ) if( resp[i] == 0 ){
		if( !ok ){ resp[i] = comps[0].second; ok = true; }
		else resp[i] = comps[2].second;
	}

	return resp;
}
#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...