제출 #1359061

#제출 시각아이디문제언어결과실행 시간메모리
1359061Charizard2021기지국 (IOI20_stations)C++20
0 / 100
296 ms616 KiB
#include "stations.h"
#include<bits/stdc++.h>
using namespace std;
vector<vector<int> > adj;
vector<int> subtree;
vector<int> order;
int idx = 0;
void dfs(int u, int p){
	subtree[u] = 1;
	order[idx++] = u;
	for(int v : adj[u]){
		if(v != p){
			dfs(v, u);
			subtree[u] += subtree[v];
		}
	}
}
vector<int> label(int n, int k, vector<int> u, vector<int> v){
	adj.resize(n);
	subtree.resize(n);
	order.resize(n);
	for(int i = 0; i < n - 1; i++){
		adj[u[i]].push_back(v[i]);
		adj[v[i]].push_back(u[i]);
	}
	dfs(0, -1);
	vector<int> val(n);
	for(int i = 0; i < n; i++){
		val[order[i]] = 1001 * i + subtree[order[i]];
	}
	for(int i = 0; i < n; i++){
		adj[i].clear();
		subtree[i] = 0;
		order[i] = 0;
	}
	order.clear();
	subtree.clear();
	adj.clear();
	idx = 0;
	return val;
}
int find_next_station(int s, int t, vector<int> c){
	int s_ = s/1001;
	int t_ = t/1001;
	int parent = -1;
	for(int x : c){
		int x_ = x/1001;
		int sub = x % 1001;
		if(x_ <= s_ && s_ < x_ + sub){
			parent = x;
		}
	}
	for(int x : c){
		int x_ = x/1001;
		int sub = x % 1001;
		if(x_ <= t_ && t_ < x_ + sub){
			return x;
		}
	}
	return parent;
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…