Submission #1297646

#TimeUsernameProblemLanguageResultExecution timeMemory
1297646lukaye_19Stations (IOI20_stations)C++20
0 / 100
396 ms540 KiB
#include "stations.h"
#include <vector>
#include <algorithm>

using namespace std;

int t = 1;

void DFS(int node,int parent,vector<vector<int>>& adj,vector<int>& tin,vector<int>& tout) {
    tin[node] = t++;

    for (int nenode : adj[node]) {
        if (nenode != parent) {
            DFS(nenode,node,adj,tin,tout);
        }
    }

    tout[node] = t - 1;
}

vector<int> label(int n, int k, vector<int> u, vector<int> v)
{
    vector<int> labels(n);
    vector<vector<int>> adj(n + 1);

    for (int i = 0; i < n - 1; i++)
    {
        int u1 = u[i];
        int v1 = v[i];

        adj[u1].push_back(v1);
        adj[v1].push_back(u1);
    }

    vector<int> tin(n + 1);
    vector<int> tout(n + 1);

    t = 1;
    
    DFS(1,0,adj,tin,tout);

    for (int i = 1; i <= n; i++)
    {
        labels[i - 1] = tin[i];
    }

    return labels;
}

int find_next_station(int s,int t,vector<int> c)
{
    int next = -1;

    sort(c.begin(), c.end());

    for (int st : c) {
        if (st <= t) next = st;
    }

    if (next == -1) next = c[0];

    return next;
}
#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...