제출 #1209807

#제출 시각아이디문제언어결과실행 시간메모리
1209807a.pendov기지국 (IOI20_stations)C++20
0 / 100
306 ms616 KiB
#include "stations.h"
#include <bits/stdc++.h>
using namespace std;

const long long MAXN=1009;
long long sz[MAXN];
long long ans[MAXN];
bool vis[MAXN];
vector<int> edg[MAXN];

long long dfs(int start)
{
    sz[start]=1;
    vis[start]=1;
    for(auto i:edg[start])
    {
        if(!vis[i])
        sz[start]+=dfs(i);
    }
    return sz[start];
}

void solve(int start,bool b,int l,int r)
{
    vis[start]=0;
    if(b)
    {
        ans[start]=r;
        r--;
    }
    else
    {
        ans[start]=l;
        l++;
    }

    for(auto i:edg[start])
    {
        if(vis[i]){
        solve(i,!b,l,l+sz[i]-1);
        l+=sz[i];}
    }
}

std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v)
{
    std::vector<int> labels(n);
    for(int i=0; i<n-1; i++)
    {
        edg[u[i]].push_back(v[i]);
        edg[v[i]].push_back(u[i]);
    }
    dfs(0);
    solve(0,1,0,n-1);
    for(int i=0; i<n; i++)labels[i]=ans[i];
    return labels;
}

int find_next_station(int s, int t, std::vector<int> c)
{
    sort(c.begin(),c.end());
    return 0;
    if(s<c[0])
    {
        if(t<s)return c[c.size()-1];
        if(t>=c[c.size()-1])return c[c.size()-1];
        for(int i=0; i<c.size()-1; i++)
        {
            if(t<=c[i])return c[i];
        }
    }
    else
    {
        if(t>s)return c[0];
        if(t<=c[0])return c[0];
        for(int i=c.size()-1; i>0; i--)
        {
            if(t<=c[i])return c[i];
        }
    }

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