Submission #854188

#TimeUsernameProblemLanguageResultExecution timeMemory
854188nninStations (IOI20_stations)C++14
0 / 100
528 ms944 KiB
#include "stations.h"
#include<bits/stdc++.h>
using namespace std;

vector<int> tmp, adj[1005];
int num;

void dfs(int cur, int prev, bool mx) {
	if(!mx)  tmp[cur] = num++;
	for(int next:adj[cur]) {
		if(next==prev) continue;
		dfs(next, cur, !mx);
	}
	if(mx) tmp[cur] = num++;
}

std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) {
	std::vector<int> labels(n);
	tmp.resize(n);
	num = 0;
	for(int i=0;i<n;i++) adj[i].clear();
	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, 0);
	for(int i=0;i<n;i++) labels[i] = tmp[i];
	return labels;
}

int find_next_station(int s, int t, std::vector<int> c) {
	int it = 0;
	if(s<c[0]) {
		if(t<s) it = c.size()-1;
		else it = lower_bound(c.begin(), c.end(), t)-c.begin();
	} else {
		if(t>s) it = 0;
		else it = upper_bound(c.begin(), c.end(), t)-c.begin()-1;
		
	}
	return c[it];
}
#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...