답안 #309918

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
309918 2020-10-05T01:36:43 Z tjdgus4384 기지국 (IOI20_stations) C++14
0 / 100
1541 ms 2097156 KB
#include<bits/stdc++.h>
#include "stations.h"
using namespace std;
vector<int> path[1001];
bool visited[1001];
int tsize[1001], lb[1001];

int dfs(int x){
    int s = 1;
    for(int i = 0;i < path[x].size();i++){
        if(visited[path[x][i]]) continue;
        visited[path[x][i]] = true;
        s += dfs(path[x][i]);
    }
    return tsize[x] = s;
}
void dfs2(int x, int s, int e, int d){
    if(d%2 == 0) {lb[x] = s; s++;}
    else lb[x] = e;
    for(int i = 0;i < path[x].size();i++){
        if(visited[path[x][i]]) continue;
        dfs2(path[x][i], s, s+tsize[path[x][i]]-1, d+1);
        s+=tsize[path[x][i]];
    }
}

vector<int> label(int n, int k, vector<int> u, vector<int> v){
    for(int i = 0;i < n;i++) path[i].clear();
    for(int i = 0;i < n-1;i++){
        path[u[i]].push_back(v[i]);
        path[v[i]].push_back(u[i]);
    }
    for(int i = 0;i < n;i++) visited[i] = false;
    visited[0] = true;
    dfs(0);
    for(int i = 0;i < n;i++) visited[i] = false;
    visited[0] = true;
    dfs2(0, 0, n-1, 0);
    vector<int> ret;
    for(int i = 0;i < n;i++) ret.push_back(lb[i]);
    return ret;
}

int find_next_station(int s, int t, vector<int> c){
    if(c[0] < s){
        if(t > s) return c[0];
        c.push_back(1001);
        for(int i = 0;i < c.size() - 1;i++){
            if(t >= c[i] && t < c[i+1]) return c[i];
        }
    }
    else{
        if(t < s) return c.back();
        for(int i = 0;i < c.size();i++){
            if(t <= c[i]) return c[i];
        }
        return c.back();
    }
}

Compilation message

stations.cpp: In function 'int dfs(int)':
stations.cpp:10:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   10 |     for(int i = 0;i < path[x].size();i++){
      |                   ~~^~~~~~~~~~~~~~~~
stations.cpp: In function 'void dfs2(int, int, int, int)':
stations.cpp:20:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   20 |     for(int i = 0;i < path[x].size();i++){
      |                   ~~^~~~~~~~~~~~~~~~
stations.cpp: In function 'int find_next_station(int, int, std::vector<int>)':
stations.cpp:48:25: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   48 |         for(int i = 0;i < c.size() - 1;i++){
      |                       ~~^~~~~~~~~~~~~~
stations.cpp:54:25: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   54 |         for(int i = 0;i < c.size();i++){
      |                       ~~^~~~~~~~~~
stations.cpp:59:1: warning: control reaches end of non-void function [-Wreturn-type]
   59 | }
      | ^
# 결과 실행 시간 메모리 Grader output
1 Runtime error 1541 ms 2097156 KB Execution killed with signal 9 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 1305 ms 2097156 KB Execution killed with signal 9 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 1297 ms 2097156 KB Execution killed with signal 9 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1012 ms 872 KB Output is correct
2 Runtime error 1289 ms 2097156 KB Execution killed with signal 9 (could be triggered by violating memory limits)
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 1322 ms 2097156 KB Execution killed with signal 9 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -