Submission #1292816

#TimeUsernameProblemLanguageResultExecution timeMemory
1292816lambd47Stations (IOI20_stations)C++20
0 / 100
3052 ms484 KiB
#include<bits/stdc++.h>
using namespace std;
#define L(i,j,k) for(int i=(j);i<=(k);i++)
#define R(i,j,k) for(int i=(j);i>=(k);i--)
#define sz(v) ((int)(v).size())
#define all(v) (v).begin(),(v).end()
#include "stations.h"

std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) {
	vector<int> dp(n);
	vector<vector<int>> adj(n);
	L(i,0,n-2){
		adj[u[i]].push_back(v[i]);
		adj[v[i]].push_back(u[i]);
	}
	int node=0;
	L(i,0,n-1)if(sz(adj[i])==1)node=i;
	int lst=-1;
	int at=n-1;
	while(true){
		dp[node]=at;
		if(sz(adj[node])==1 && lst==adj[node][0])return dp;
		int pst=node;
		if(sz(adj[node])==1)node=adj[node][0];
		else node=adj[node][0]^adj[node][1]^lst;
		lst=pst;
	}
	return dp;
}

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