제출 #1257932

#제출 시각아이디문제언어결과실행 시간메모리
1257932Nurislam기지국 (IOI20_stations)C++20
100 / 100
308 ms600 KiB
#include "stations.h"
#include <bits/stdc++.h>


using namespace std;

vector<int> label(int n, int k, vector<int> u,vector<int> v) {
	vector<vector<int>> g(n);
	for(int i = 0; i+1 < n; i ++ ) {
		g[u[i]].push_back(v[i]);
		g[v[i]].push_back(u[i]);
	};
	
	int ct = 0;
	vector<int> l(n);
	
	function<void(int,int,int)> dfs = [&](int ps,int pr, int tp) {
		if(tp) l[ps] = ct ++ ;
		
		for(int to : g[ps] )
			if(to != pr)
				dfs(to,ps,tp^1);
		
		if(!tp) l[ps] = ct ++ ;
	};
	dfs(0,0,0);
	
	return l;
};


int find_next_station(int s, int t, vector<int> g) {
	
	for(int i : g) if(t == i) return i;
	
	if(s < g[0]){
		if(t < s)return g.back();
		for(int i : g)
			if(t <= i) 
				return i;
		return g.back();
	}
	
	if(t > s) return g[0];
	reverse(g.begin(), g.end());
	for(int i : g) 
		if(i <= t) 
			return i;
	
	return g.back();	
};
#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...