답안 #306860

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
306860 2020-09-26T11:30:43 Z VEGAnn 기지국 (IOI20_stations) C++14
0 / 100
923 ms 1024 KB
#include "stations.h"
#include <bits/stdc++.h>
#define PB push_back
#define sz(x) ((int)x.size())
#define all(x) x.begin(),x.end()
using namespace std;
vector<int> g[1000];
int tin[1000], tout[1000], tt = 0, ht[1000];

void dfs(int v, int p, bool tp){
    tin[v] = tt++;
    ht[v] = tp;

    for (int u : g[v]){
        if (u == p) continue;
        dfs(u, v, tp ^ 1);
    }

    tout[v] = tt++;
}

std::vector<int> label(int n, int k, std::vector<int> u, std::vector<int> v) {
    for (int i = 0; i < n; i++)
        g[i].clear();

    tt = 0;

    for (int i = 0; i < sz(u); i++){
        g[u[i]].PB(v[i]);
        g[v[i]].PB(u[i]);
    }

    dfs(0, -1, 0);

    vector<int> labels;

    labels.resize(n);

    for (int i = 0; i < n; i++) {
        if (ht[i] == 0)
            labels[i] = tin[i];
        else labels[i] = tout[i] + 2000;
    }

	return labels;
}

int find_next_station(int s, int t, std::vector<int> c) {
    int N = 2000;

    int ss = s;

    if (s >= N) ss -= N;

    int tt = t;

    if (t >= N) tt -= N;

    if (s < N){
        if (ss > tt) return c.back();

        int siz = sz(c);

        int anc = c.back() - N;

        if (s > 0) anc = c[siz - 2] - N;

        if (tt <= anc){
            for (int v : c)
                if (tt <= v - N)
                    return v;
        } else return c.back();
    } else {
        if (ss < tt) return c[0];

        if (tt >= c[1]){
            reverse(all(c));

            for (int v : c)
                if (tt >= v)
                    return v;
        } else return c[0];
    }
}

Compilation message

stations.cpp: In function 'int find_next_station(int, int, std::vector<int>)':
stations.cpp:84:1: warning: control reaches end of non-void function [-Wreturn-type]
   84 | }
      | ^
# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 512 KB Invalid labels (values out of range). scenario=0, k=1000, vertex=1, label=2014
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 5 ms 384 KB Invalid labels (values out of range). scenario=0, k=1000, vertex=1, label=3022
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 555 ms 1024 KB Wrong query response.
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 923 ms 872 KB Output is correct
2 Correct 780 ms 768 KB Output is correct
3 Incorrect 625 ms 872 KB Wrong query response.
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 521 ms 1024 KB Wrong query response.
2 Halted 0 ms 0 KB -