제출 #640976

#제출 시각아이디문제언어결과실행 시간메모리
640976t6twotwo기지국 (IOI20_stations)C++17
100 / 100
953 ms804 KiB
#include "stations.h"
#include <bits/stdc++.h>
using namespace std;
vector<int> label(int n, int k, vector<int> u, vector<int> v) {
  vector<vector<int>> adj(n);
  for (int i = 0; i < n - 1; i++) {
    adj[u[i]].push_back(v[i]);
    adj[v[i]].push_back(u[i]);
  }
  int cnt = 0;
  vector<int> ans(n);
  function<void(int, int, int)> dfs = [&](int a, int c, int d) {
    if (d == 0) {
      ans[a] = cnt++;
    }
    for (int b : adj[a]) {
      if (b != c) {
        dfs(b, a, d ^ 1);
      }
    }
    if (d == 1) {
      ans[a] = cnt++;
    }
  };
  dfs(0, -1, 0);
  return ans;
}
int find_next_station(int s, int t, vector<int> c) {
  int m = c.size();
  if (s < c[0]) {
    if (s < t && t <= c[0]) {
      return c[0];
    }
    for (int i = 1; i < m - 1; i++) {
      if (c[i - 1] < t && t <= c[i]) {
        return c[i];
      }
    }
    return c[m - 1];
  } else {
    if (c[m - 1] <= t && t < s) {
      return c[m - 1];
    }
    for (int i = 1; i < m - 1; i++) {
      if (c[i] <= t && t < c[i + 1]) {
        return c[i];
      }
    }
    return c[0];
  }
}
#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...