답안 #344140

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
344140 2021-01-05T07:44:11 Z milleniumEeee 도서관 (JOI18_library) C++17
0 / 100
2000 ms 408 KB
#include <bits/stdc++.h>
#include "library.h"
//#include "grader.cpp"
using namespace std;

// Query(M) = мин кол-во чтобы вырезать нужные числа

const int MAXN = 1005;

vector <int> g[MAXN];
vector <int> res;
int n;

int ask(int a, int b) {
  vector <int> need(n, 0);
  need[a - 1] = 1; 
  need[b - 1] = 1;
  int x = Query(need);
  return x;
}

void dfs(int v, int par, int ind) {
  res[ind] = v;
  for (int to : g[v]) {
    if (to != par) {
      dfs(to, v, ind + 1);
    }
  }
}

void Solve(int N) {
  n = N;
  vector <int> deg(n + 1, 0);
  res.resize(n);
  for (int i = 1; i <= n; i++) {
    for (int j = i + 1; j <= n; j++) {
      if (ask(i, j) == 1) {
        g[i].push_back(j);
        g[j].push_back(i);
        deg[i]++, deg[j]++;
      }
    }
  }
  int root = -1;
  int sz[3] = {0, 0, 0};
  for (int i = 1; i <= n; i++) {
    sz[deg[i]]++;
    if (deg[i] == 1) {
      root = i;
      break;
    }
  }
  dfs(root, -1, 0);
  if ((int)res.size() != n || !(sz[1] == 2 && sz[2] == n - 2)) {
    while (1);
  }
  Answer(res);
}
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 3074 ms 408 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 3074 ms 408 KB Time limit exceeded
2 Halted 0 ms 0 KB -