Submission #517111

#TimeUsernameProblemLanguageResultExecution timeMemory
517111Sirapetch기지국 (IOI20_stations)C++14
0 / 100
441 ms512 KiB
#include <bits/stdc++.h>
using namespace std;

vector <int> path[1111];
stack <int> walk;
int pass[1111],ty[1111],st[1111];
vector <int> la;

vector <int> label(int n, int k, vector<int> u, vector<int> v)
{
    la.clear();
    int i,x,y;
    for(i=0;i<n;i++)
    {
        pass[i]=0;
        ty[i]=0;
        la.push_back(0);
        path[i].clear();
    }
    x=u.size();
    for(i=0;i<x;i++)
    {
        path[u[i]].push_back(v[i]);
        path[v[i]].push_back(u[i]);
    }
    for(i=0;i<n;i++)
    {
        if(path[i].size()!=1)
        {
            pass[i]=1;
            break;
        }
    }
    la[i]=0;
    x=1;
    y=1;
    for(auto a:path[i])
    {
        st[y]=x;
        walk.push(a);
        while(!walk.empty())
        {
            i=walk.top();
            walk.pop();
            if(pass[i]==1) continue;
            pass[i]=1;
            la[i]=x;
            ty[x]=y;
            x++;
            for(auto a:path[i])
            {
                if(pass[a]==1) continue;
                walk.push(a);
            }
        }
        y++;
    }
    return la;
}

int find_next_station(int s, int t, vector<int> c)
{
    if(ty[s]==0)
    {
        return st[ty[t]];
    }
    if(ty[s]==ty[t])
    {
        if(s<t) return s+1;
        else return s-1;
    }
    if(s==st[ty[s]]) return 0;
    else return s-1;
}
#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...