답안 #306059

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
306059 2020-09-24T12:07:13 Z eriksuenderhauf 기지국 (IOI20_stations) C++17
16 / 100
1055 ms 1024 KB
#include "stations.h"
#include <bits/stdc++.h>
using namespace std;

vector<int> label(int n, int k, vector<int> u, vector<int> v) {
  vector<int> deg(n);
  vector<vector<int>> adj(n);
  for (int i = 0; i < n - 1; i++)
    deg[u[i]]++, deg[v[i]]++, adj[u[i]].push_back(v[i]), adj[v[i]].push_back(u[i]);;
  vector<int> labels(n);
  // if (*max_element(deg.begin(), deg.end()) <= 2) {
  //   int r = min_element(deg.begin(), deg.end()) - deg.begin(), p = -1;
  //   labels[r] = 0;
  //   for (int i = 1; i < n; i++) {
  //     if (~p) adj[r].erase(find(adj[r].begin(), adj[r].end(), p));
  //     tie(r, p) = make_pair(adj[r][0], r);
  //     labels[r] = i;
  //   }
  // } else {
  //   iota(labels.begin(), labels.end(), 0);
  // }
  function<void(int,int,int)> dfs = [&](int u, int p, int l) {
    labels[u] = l;
    adj[u].erase(find(adj[u].begin(), adj[u].end(), p));
    if (!adj[u].empty())
      dfs(adj[u][0], u, l+1);
  };
  int r = max_element(deg.begin(), deg.end()) - deg.begin();
  int lo = 1; labels[r] = 0;
  for (int v: adj[r]) {
    dfs(v, r, lo);
    lo += 1000;
  }
  return labels;
}

int find_next_station(int s, int t, vector<int> c) {
  sort(c.begin(), c.end());
  if (t == 0)
    return c[0];
  if (s == 0)
    return ((t-1) / 1000) * 1000 + 1;
  if ((s-1) / 1000 == (t-1) / 1000)
    return s < t ? c.back() : c[0];
  return c[0];
  // set<int> tmp; for (int x: c) tmp.insert(x+1);
  // int y = t+1;
  // if (tmp.count(y)) return y-1;
  // while (y > 0) {
  //   y /= 2;
  //   if (tmp.count(y))
  //     return y-1;
  // }
  // return *min_element(c.begin(), c.end());
  // return s < t ? *max_element(c.begin(), c.end()) : *min_element(c.begin(), c.end());
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 4 ms 512 KB Invalid labels (values out of range). scenario=0, k=1000, vertex=1, label=1005
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 6 ms 384 KB Invalid labels (values out of range). scenario=0, k=1000, vertex=3, label=1001
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 550 ms 1024 KB Output is correct
2 Correct 463 ms 1024 KB Output is correct
3 Correct 879 ms 896 KB Output is correct
4 Correct 662 ms 640 KB Output is correct
5 Correct 599 ms 648 KB Output is correct
6 Correct 499 ms 1016 KB Output is correct
7 Correct 472 ms 768 KB Output is correct
8 Correct 3 ms 640 KB Output is correct
9 Correct 5 ms 652 KB Output is correct
10 Correct 2 ms 640 KB Output is correct
11 Correct 595 ms 776 KB Output is correct
12 Correct 474 ms 1024 KB Output is correct
13 Correct 489 ms 1024 KB Output is correct
14 Correct 465 ms 836 KB Output is correct
15 Correct 54 ms 896 KB Output is correct
16 Correct 70 ms 860 KB Output is correct
17 Correct 116 ms 768 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 882 ms 640 KB Output is correct
2 Correct 684 ms 640 KB Output is correct
3 Correct 691 ms 640 KB Output is correct
4 Correct 3 ms 640 KB Output is correct
5 Correct 4 ms 648 KB Output is correct
6 Correct 2 ms 640 KB Output is correct
7 Correct 650 ms 640 KB Output is correct
8 Correct 1043 ms 640 KB Output is correct
9 Correct 794 ms 640 KB Output is correct
10 Correct 721 ms 640 KB Output is correct
11 Incorrect 1 ms 256 KB Invalid labels (duplicates values). scenario=5, label=0
12 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Partially correct 639 ms 1024 KB Partially correct
2 Partially correct 544 ms 1024 KB Partially correct
3 Correct 1055 ms 640 KB Output is correct
4 Partially correct 761 ms 644 KB Partially correct
5 Partially correct 735 ms 656 KB Partially correct
6 Partially correct 490 ms 1016 KB Partially correct
7 Partially correct 466 ms 784 KB Partially correct
8 Partially correct 3 ms 640 KB Partially correct
9 Partially correct 5 ms 640 KB Partially correct
10 Partially correct 2 ms 644 KB Partially correct
11 Incorrect 5 ms 376 KB Invalid labels (duplicates values). scenario=0, label=0
12 Halted 0 ms 0 KB -