답안 #313449

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
313449 2020-10-16T03:05:03 Z qiangbao 기지국 (IOI20_stations) C++14
0 / 100
1 ms 384 KB
#include <iostream>
#include <algorithm>
#include <vector>

#define pb push_back

using namespace std;

typedef pair<int, int> pii;

vector<int> con[1001];
vector<int> son[1001];
bool used[1001];

vector<int> ans;

void rt(int x)
{
    int i;
    
    used[x]=true;
    for(i=0;i<con[x].size();i++){
        int f=con[x][i];
        if(!used[f])
            son[x].pb(f), used[f]=true, rt(f);
    }
}

pii wk(int x, int lev, int label)
{
    pii ret={label, 1};
    int i;
    
    if(lev%2==0){
        ans[x]=label;
        for(i=0;i<son[x].size();i++){
            pii f=wk(son[x][i], lev+1, label+1);
            label+=f.second;
            ret.first=max(ret.first, f.first);
            ret.second+=f.second;
        }
    }
    if(lev%2==1){
        for(i=0;i<son[x].size();i++){
            pii f=wk(son[x][i], lev+1, label);
            label+=f.second;
            ret.first=max(ret.first, f.first);
            ret.second+=f.second;
        }
        ans[x]=label;
    }
    
    return ret;
}

vector<int> label(int n, int k, vector<int> u, vector<int> v)
{
    int i;
    for(i=0;i<=1000;i++){
        con[i].clear();
        son[i].clear();
        used[i]=false;
    }
    ans.clear();
    
    for(i=0;i<n-1;i++){
        con[u[i]].pb(v[i]);
        con[v[i]].pb(u[i]);
        ans.pb(0);
    }
    rt(0);
    wk(0, 1, 0);
    
    return ans;
}

int find_next_station(int s, int t, vector<int> nei)
{
    int lev=1;
    int i;
    
    for(i=0;i<nei.size();i++)
        if(nei[i]<s)
            lev=0;
    
    if(lev==1){
        sort(nei.begin(), nei.end());
        bool maxi=false;
        if(t<s)
            maxi=true;
        if(maxi)
            return nei[nei.size()-1];
        for(i=int(nei.size())-1;i>=0;i--)
            if(t>nei[i])
                return nei[i];
    }
    else{
        sort(nei.begin(), nei.end());
        bool mini=false;
        if(t>=nei[nei.size()-1])
            mini=true;
        if(mini)
            return nei[0];
        for(i=0;i<nei.size();i++)
            if(t<nei[i])
                return nei[i];
    }
    
    return -1;
}

//int main()
//{
//    int i;
//
//    label(5, 10, {0, 1, 1, 2}, {1, 2, 3, 4});
//    for(i=0;i<5;i++)
//        cout << ans[i] << " ";
//    cout << endl;
//
//    cout << find_next_station(2, 0, {1, 4}) << endl;
//}

Compilation message

stations.cpp: In function 'void rt(int)':
stations.cpp:22:14: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   22 |     for(i=0;i<con[x].size();i++){
      |             ~^~~~~~~~~~~~~~
stations.cpp: In function 'pii wk(int, int, int)':
stations.cpp:36:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   36 |         for(i=0;i<son[x].size();i++){
      |                 ~^~~~~~~~~~~~~~
stations.cpp:44:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   44 |         for(i=0;i<son[x].size();i++){
      |                 ~^~~~~~~~~~~~~~
stations.cpp: In function 'int find_next_station(int, int, std::vector<int>)':
stations.cpp:82:14: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   82 |     for(i=0;i<nei.size();i++)
      |             ~^~~~~~~~~~~
stations.cpp:104:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  104 |         for(i=0;i<nei.size();i++)
      |                 ~^~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 384 KB Invalid length of array as the response of 'label'. scenario=0, n=10, len=9
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 384 KB Invalid length of array as the response of 'label'. scenario=0, n=996, len=995
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 384 KB Invalid length of array as the response of 'label'. scenario=0, n=2, len=1
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 384 KB Invalid length of array as the response of 'label'. scenario=0, n=2, len=1
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 384 KB Invalid length of array as the response of 'label'. scenario=0, n=3, len=2
2 Halted 0 ms 0 KB -