제출 #1240327

#제출 시각아이디문제언어결과실행 시간메모리
1240327Sir_Ahmed_Imran기지국 (IOI20_stations)C++17
0 / 100
2103 ms2162688 KiB
#include "stations.h"
#include <bits/stdc++.h>
using namespace std;
#define MAXN 1001
#define nl '\n'
#define ff first
#define ss second
#define ll long long
#define ld long double
#define terminator main
#define pll pair<ll,ll>
#define add insert
#define append push_back
#define pii pair<int,int>
#define all(x) (x).begin(),(x).end()

bool p[MAXN];
int siz[MAXN];
vector<int> et;
vector<int> a[MAXN];

void dfs(int v, int u){
	siz[v] = 1;
	et.append(v);
	for(auto & i : a[v]){
		if(i == u) continue;
		p[i] = !p[v];
		dfs(i, v);
		siz[v] += siz[i];
	} 
}

vector<int> label(int n, int k, vector<int> u, vector<int> v) {
	vector<int> x, l(n, -1);
	for(int i = 0; i < n - 1; i++){
		a[u[i]].append(v[i]);
		a[v[i]].append(u[i]);
		x.append(i);
	}
	x.append(n - 1);
	dfs(0, -1);
	for(auto & i : et){
		if(p[i]){
			l[i] = x[siz[i] - 1];
			for(int j = siz[i] - 1; j < x.size() - 1; j++)
				x[j] = x[j + 1];
			x.pop_back();
		}
		else{
			l[i] = x[0];
			for(int j = 0; j < x.size() - 1; j++)
				x[j] = x[j + 1];
			x.pop_back();
		}
	}
	return l;
}

int find_next_station(int s, int t, vector<int> c){
	return 0;
	if(c[0] > s){
		if(c.back() < t || t < s) 
			return c.back();
		return *lower_bound(all(c), t);
	}
	if(c[0] > t || t > s) return c[0];
	return *(--upper_bound(all(c), t));
}
#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...