Submission #1194309

#TimeUsernameProblemLanguageResultExecution timeMemory
1194309simona1230Stations (IOI20_stations)C++20
0 / 100
315 ms5232 KiB
#include "stations.h"
#include <bits/stdc++.h>
using namespace std;

vector<int> g[200001];
vector<int> l;
int used[200001];
void dfs(int i,int h)
{
    used[i]=1;
    if(i<l.size())l[i]=h;
    for(int j=0; j<g[i].size(); j++)
    {
        int nb=g[i][j];
        if(!used[nb])dfs(nb,h+1000);
    }
}


std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v)
{
    l.clear();
    for(int i=0;i<n;i++)
        l.push_back(0);
    for(int i=0; i<n; i++)
        g[i].clear(),used[i]=0;
    for(int i=0; i<n-1; i++)
        g[u[i]].push_back(v[i]),g[v[i]].push_back(u[i]);

    for(int i=0; i<n; i++)
    {
        if(g[i].size()>2)
        {
            l[i]=0;
            used[i]=1;
            for(int j=0; j<g[i].size(); j++)
            {
                dfs(g[i][j],j+1);
            }
            return l;
        }
    }

    if(!used[0])dfs(0,1);

    return l;
}

int find_next_station(int s, int t, std::vector<int> c)
{
    return c[0];
    if(c.size()==1)return c[0];
    //cout<<s<<" ! "<<t<<endl;
    if(s%1000==t%1000)
    {
        if(s<t)return c[1];
        return c[0];
    }

    if(s==0)
        return t%1000;

    if(s<1000)return 0;
    return s-1000;
}
#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...