#include <bits/stdc++.h>
#include "island.h"
using namespace std;
int aa, bb;
vector <bool> visited(305);
vector <pair <int, int>> edge;
void dfs(int u, int p){
visited[u] = true;
int a = query(u, 1);
if (a == p) a = query(u, 2);
if (visited[a] || a == aa || a == bb) return;
// cout << u << " -> ";
edge.emplace_back(u, a);
dfs(a, u);
}
void line(int u, int p){
visited[u] = true;
int a = query(u, 1);
if (visited[a]) a = query(u, 2);
edge.emplace_back(u, a);
line(a, u);
}
void solve(int n, int q) {
if (n == 3) {
int x = query(1, 1), y = query(1, 2);
if (x == 3 && y == 2) {
answer(1, 3);
answer(3, 2);
}
else {
x = query(3, 1), y = query(3, 2);
if (x == 2 && y == 1) {
answer(1, 2);
answer(2, 3);
}
else {
answer(1, 2);
answer(1, 3);
}
}
return;
}
int b = query(1, 2);
if (query(b, 1) != 1) {
visited[1] = true;
line(1, 1);
}
else {
int a = query(1, 1);
aa = a, bb = b;
visited[1] = true;
edge.emplace_back(1, a);
edge.emplace_back(1, b);
// cout << "dfs1: ";
dfs(a, 1);
// cout << "\n";
// cout << "dfs2: ";
dfs(b, 1);
// cout << "\n";
}
for (auto [u, v] : edge) {
// cout << u << " " << v << "\n";
answer(u, v);
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |