제출 #1238784

#제출 시각아이디문제언어결과실행 시간메모리
1238784erering기지국 (IOI20_stations)C++20
0 / 100
308 ms572 KiB
#include <bits/stdc++.h>
#include "stations.h"
using namespace std;
#define pb push_back
const int N=1005;
vector<int> adj[N];
int tim=0,in[N],out[N],lab[N];
void dfs(int node,int par,int depth){
    in[node]=tim++;
    if(depth%2==0)lab[node]=in[node];
    depth++;
    for(auto i:adj[node]){
        if(i!=par)dfs(i,node,depth);
    }
    out[node]=tim++;
    if(depth%2==0)lab[node]=out[node];
}
std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) {
    for(int i=0;i<n;i++){
        adj[i].clear();
        lab[i]=0; in[i]=0; out[i]=0; tim=0;
    }
	for(int i=0;i<u.size();i++){
        adj[u[i]].pb(v[i]);
        adj[v[i]].pb(u[i]);
    }
    dfs(0,-1,0);
    vector<int> final;
  /*  set<int> comp;
    for(int i=0;i<n;i++)comp.insert(lab[i]);
    map<int,int> c;
    int cnt=0;
    for(auto i:comp)c[i]=cnt++;*/
    for(int i=0;i<n;i++)final.pb(lab[i]);
    return final;
}

int find_next_station(int s, int t, std::vector<int> c) {
	if(s<c[0]){
        if(t>s && t<=c[0])return c[0];
        for(int i=1;i<c.size()-1;i++){
            if(t>c[i-1] && t<=c[i])return c[i];
        }
        return c.back();
    }
    for(int i=0;i<c.size()-1;i++){
        if(t>=c[i] && t<c[i+1])return c[i];
    }
    return c.back();
}
#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...