Submission #1191828

#TimeUsernameProblemLanguageResultExecution timeMemory
1191828nagorn_phIsland Hopping (JOI24_island)C++20
7 / 100
2 ms416 KiB
#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 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);
            }
        }
    }
    int a = query(1, 1), b = query(1, 2);
    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 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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...