제출 #1190322

#제출 시각아이디문제언어결과실행 시간메모리
1190322boclobanchat기지국 (IOI20_stations)C++20
100 / 100
303 ms572 KiB
#include"stations.h"
#include<bits/stdc++.h>
using namespace std;
const int MAXN=1024;
vector<int> ds[MAXN];
int tag[MAXN],dis[MAXN],tdfs=0;
void dfs(int i,int pre)
{
	if(dis[i]%2==0) tag[i]=++tdfs;
	for(auto v:ds[i]) if(v!=pre)
	{
		dis[v]=dis[i]+1;
		dfs(v,i);
	}
	if(dis[i]%2==1) tag[i]=++tdfs;
}
vector<int> label(int n,int k,vector<int> u,vector<int> v)
{
	tdfs=0;
	vector<int> labels(n);
	for(int i=0;i<n-1;i++) ds[u[i]].push_back(v[i]),ds[v[i]].push_back(u[i]);
	dfs(0,0);
	for(int i=0;i<n;i++) labels[i]=tag[i],ds[i].clear();
	return labels;
}
int find_next_station(int s,int t,vector<int> c)
{
	if(s<c[0])
	{
		int pre=s;
		for(int j=0;j<c.size()-1;j++) if(pre<t&&t<=c[j]) return c[j];
		return c[c.size()-1];
	}
	else
	{
		int pre=s;
		for(int j=c.size()-1;j>0;j--) if(pre>t&&t>=c[j]) return c[j];
		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...