Submission #401133

#TimeUsernameProblemLanguageResultExecution timeMemory
401133dxz05Stations (IOI20_stations)C++14
52.32 / 100
1214 ms788 KiB
#include "stations.h"
#include <bits/stdc++.h>

using namespace std;

const int MAXN = 1011;

vector<int> g[MAXN];

int tin[MAXN], last[MAXN], timer = 0;
void dfs(int v, int p){
    tin[v] = last[v] = timer++;
    for (int u : g[v]){
        if (u != p){
            dfs(u, v);
            last[v] = last[u];
        }
    }
}

vector<int> label(int n, int k, vector<int> U, vector<int> V) {
    for (int i = 0; i < n; i++) g[i].clear();
    timer = 0;

    for (int i = 0; i < n - 1; i++){
        g[U[i]].push_back(V[i]);
        g[V[i]].push_back(U[i]);
    }

    dfs(0, -1);

	vector<int> labels(n, 0);
	for (int i = 0; i < n; i++){
        labels[i] = tin[i] * 1000 + last[i];
	}

	return labels;
}

int find_next_station(int s, int t, vector<int> c) {
    int ans = c[0];
    t /= 1000;
    for (int v : c){
        int x = v / 1000, y = v % 1000;
        if (x <= t && t <= y) ans = v;
    }
    return ans;
}
#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...