제출 #1338758

#제출 시각아이디문제언어결과실행 시간메모리
1338758jenterjongle45기지국 (IOI20_stations)C++20
0 / 100
390 ms604 KiB
#include "stations.h"
#include <vector>
#include<bits/stdc++.h>
using namespace std;
vector<vector<int>> adj;
vector<int> L;
void dfs(int u,int now,int st,int p){
	L[u]=now;
	for(int v:adj[u]){
		if(v==p) continue;
		dfs(v,now+st,st,u);
	}
}
vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) {
	adj.resize(n);
	int st=0;
	for(int i=0;i<n-1;i++){
		adj[u[i]].push_back(v[i]);
		adj[v[i]].push_back(u[i]);
		if(adj[u[i]].size()>2) st=u[i];
		if(adj[v[i]].size()>2) st=v[i];
	}
	L.resize(n);
	L[st]=0;
	for(int i=0;i<adj[st].size();i++){
		dfs(adj[st][i],i+1,adj[st].size(),st);
	}
	// cout<<st<<'\n';
	adj.clear();
	// for(int x:L) cout<<x<<" ";
	return L;

}

int find_next_station(int s, int t, std::vector<int> c) {
	if(c.size()==1) return c[0];
	// cout<<s<<" "<<t<<" "<<c.size()<<'\n';
	if(s==0) return t%c.size()==0?c.size():t%c.size();
	if(t%((c[1]-c[0])/2)==s) return (s<t?c[1]:c[0]);
	return c[0];
	return 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...