제출 #800618

#제출 시각아이디문제언어결과실행 시간메모리
800618Liudas기지국 (IOI20_stations)C++17
100 / 100
758 ms760 KiB
#include <bits/stdc++.h>
#define endl "\n"
using namespace std;
void dfs(int head, int par, vector<vector<int>> &tree, int &col, vector<int> &labels, int d){
    if(!d){
        labels[head] = col ++;
    }
    for(int i : tree[head]){
        if(i != par){
            dfs(i, head, tree, col, labels, d ^ 1);
        }
    }
    if(d){
        labels[head] = col++;
    }
}
int find_next_station(int s, int t, vector<int> labels){
    sort(labels.begin(), labels.end());
    if(s < labels[0]){
        if(t < s || t >= labels.back()){
            return labels.back();
        }
        for(int i : labels){
            if(i >= t){
                return i;
            }
        }
    }
    else{
        if(t > s || t <= labels[0]){
            return labels[0];
        }
        reverse(labels.begin(), labels.end());
        for(int i : labels){
            if(i <= t){
                return i;
            }
        }
    }
}
vector<int> label(int N, int K, vector<int> U, vector<int> V){
    vector<vector<int>> tree(N);
    for(int i = 0; i < N-1; i ++){
        tree[U[i]].push_back(V[i]);
        tree[V[i]].push_back(U[i]);
    }
    vector<int> labels(N);
    int col = 0;
    dfs(0, -1, tree, col, labels, 0);
    return labels;
}

컴파일 시 표준 에러 (stderr) 메시지

stations.cpp: In function 'int find_next_station(int, int, std::vector<int>)':
stations.cpp:40:1: warning: control reaches end of non-void function [-Wreturn-type]
   40 | }
      | ^
#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...