Submission #1311272

#TimeUsernameProblemLanguageResultExecution timeMemory
1311272hmms127Stations (IOI20_stations)C++20
0 / 100
402 ms588 KiB
//#include "stations.h"
#include <vector>
#include<bits/stdc++.h>
#define pb push_back
using namespace std;
const int N=1e3+5;
vector<int>labels;vector<vector<int>>adj;
int cnt=0;
void dfs(int node,int par,int col){
    if(col==1)labels[node]=cnt++;
    for(auto it:adj[node])if(it!=par)dfs(it,node,col^1);
    if(col==0)labels[node]=cnt++;
}
std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) {
    labels.resize(n);
    adj.assign(n,{});
    cnt=0;
	for(int i=0;i<n-1;i++){
	    adj[u[i]].pb(v[i]);
	    adj[v[i]].pb(u[i]);
	}
	dfs(0,-1,0);
	return labels;
}
int find_next_station(int s, int t, std::vector<int> c) {
    if(c[0]>s){
        if(t<s||(c.size()>=2&&t>c[c.size()-2]))return c.back();
        int x=(lower_bound(c.begin(),c.end(),t)-c.begin());
        return c[x];
    }
    else {
        if(t>s||(c.size()>=2&&t<c[1]))return c[0];
        int idx=(upper_bound(c.begin(),c.end(),t)-c.begin());
        return c[idx-1];
    }
    return s;
}
#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...