제출 #1330066

#제출 시각아이디문제언어결과실행 시간메모리
1330066duckindog기지국 (IOI20_stations)C++20
100 / 100
400 ms608 KiB
#include "stations.h"
#include <bits/stdc++.h>

using namespace std;

vector<int> label(int n, int k, vector<int> u, vector<int> v) {
    vector<int> labels(n);
    vector<vector<int>> ad(n);
    
    for (int i = 0; i < n - 1; ++i) {
        ad[u[i]].push_back(v[i]);
        ad[v[i]].push_back(u[i]);
    }

    int timer = 0;
    function<void(int, int, bool)> dfs = [&](int node, int parent, bool type) {
        if (type) labels[node] = timer++;
        
        for (const auto& v : ad[node]) {
            if (v != parent) {
                dfs(v, node, !type);
            }
        }
        
        if (!type) labels[node] = timer++;
    };
    dfs(0, -1, true);

    return labels;
}

int find_next_station(int s, int t, vector<int> c) {
    if (c.size() == 1) return c[0];

    bool type = s < c[0];
    if (type) {
        for (int i = 0; i < (int)c.size() - 1; ++i) {
            if (t >= s && t <= c[i]) return c[i];
        }
        return c.back();
    } else {
        for (int i = c.size() - 1; i > 0; --i) {
            if (t <= s && t >= c[i]) return c[i];
        }
        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...