제출 #554823

#제출 시각아이디문제언어결과실행 시간메모리
554823status_coding기지국 (IOI20_stations)C++14
0 / 100
3025 ms2097152 KiB
#include "stations.h"
#include <bits/stdc++.h>

using namespace std;

int t;
int d[1005], in[1005], out[5005];
vector<int> v[1005];

void dfs(int p, int par)
{
    t++;
    in[p] = t;

    if(p)
        d[p] = d[par]+1;

    for(int it : v[p])
    {
        if(it == par)
            continue;

        dfs(it, p);
    }

    t++;
    out[p] = t;
}

void norm(vector<int> &v)
{
    map<int, int> fr;

    for(int it : v)
        fr[it] = 1;

    int nr = -1;
    for(auto &it : fr)
    {
        nr++;
        it.second = nr;
    }

    for(int &it : v)
        it = fr[it];
}

vector<int> label(int n, int k, vector<int> x, vector<int> y)
{
    for(int i=0; i<n-1; i++)
    {
        v[ x[i] ].push_back( y[i] );
        v[ y[i] ].push_back( x[i] );
    }

    dfs(0, -1);

    vector<int> ans;
    for(int i=0; i<n; i++)
    {
        if(d[i] % 2 == 0)
            ans.push_back(in[i]);
        else
            ans.push_back(out[i]);
    }

    norm(ans);
    return ans;
}

int find_next_station(int s, int t, vector<int> v)
{
    if(v.size() == 1)
        return v[0];

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

    if(s == 0)
    {
        for(int i=1; i<(int)v.size(); i++)
            if(v[i] >= t && v[i-1] < t)
                return v[i];

        return v[0];
    }

    if(s < v[0])
    {
        /// is in

        int l = s;
        int r = v[(int)v.size() - 2];

        if(l <= t && t <= r)
        {
            for(int i=0; i<(int)v.size()-1 ; i++)
                if(v[i] >= t)
                    return v[i];
        }
        else
            return v.back();
    }
    else
    {
        /// is out

        int l = v[1];
        int r = s;

        if(l <= t && t<=r)
        {
            for(int i=(int)v.size()-1; i>=1; i--)
                if(v[i] <= t)
                    return v[i];
        }
        else
            return v[0];
    }
}

컴파일 시 표준 에러 (stderr) 메시지

stations.cpp: In function 'int find_next_station(int, int, std::vector<int>)':
stations.cpp:119:1: warning: control reaches end of non-void function [-Wreturn-type]
  119 | }
      | ^
#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...