Submission #1192053

#TimeUsernameProblemLanguageResultExecution timeMemory
1192053alexddStations (IOI20_stations)C++20
5 / 100
308 ms544 KiB
#include "stations.h"
#include <bits/stdc++.h>
using namespace std;

void check(bool bl)
{
    if(bl==0)
        while(1);
}

vector<int> con[1005];
vector<int> sol;
int timer;
void dfs(int nod, int par)
{
    sol[nod] = timer++;
    for(int adj:con[nod])
    {
        if(adj==par)
            continue;
        dfs(adj,nod);
    }
}
std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v)
{
    sol.resize(n);
    for(int i=0;i<n;i++)
        con[i].clear();
    for(int i=0;i<n-1;i++)
    {
        con[u[i]].push_back(v[i]);
        con[v[i]].push_back(u[i]);
    }
    int root=0;
    for(int i=0;i<n;i++)
        if(con[i].size() < con[root].size())
            root = i;
    timer=0;
    dfs(root,-1);
    return sol;
}
int find_next_station(int s, int t, std::vector<int> c)
{
    if((int)c.size() == 1)
        return c[0];

    for(int i=1;i<c.size();i++)
        check(c[i-1] <= c[i]);

    if(c[0] == s+1)///s e radacina
    {
        check(s==0);
        check(t > s);
        for(int i=1;i<c.size();i++)
            if(c[i] > t)
                return c[i-1];
        return c.back();
    }
    else
    {
        check(c[1] == s+1);
        if(t < s)
            return c[0];
        assert(c[1] <= t);
        for(int i=2;i<c.size();i++)
            if(c[i] > t)
                return c[i-1];
        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...