#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);
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Execution timed out |
3074 ms |
408 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Execution timed out |
3074 ms |
408 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |