Submission #1364690

#TimeUsernameProblemLanguageResultExecution timeMemory
1364690clemmy14Island Hopping (JOI24_island)C++20
11 / 100
147 ms444 KiB
#include<bits/stdc++.h>
#include "island.h"
using namespace std;

int n;
vector<bool> vis;
vector<vector<int>> adj;
// vector<vector<int>> dis;

void dfs(int node, int prev) {
    if(vis[node]) return;
    vis[node]=true;

    // cerr << node << ' ' << prev << endl;

    for(int q=1; q<n; q++) {
        int child=query(node, q);

        // cerr << node << ' ' << child << ' ' << q << endl;

        if(child == prev) continue;
        if(vis[child]) continue;
        // cerr << node << ' ' << prev << ' ' << child << ' ' << q << endl;
        if(q >= 2) {
            if(prev != -1) {
                for(int i=1; i<n; i++) {
                    int newChild=query(child, i);
                    if(newChild == node) {
                        break;
                    } else if(newChild == prev) {
                        // adj[prev].push_back(child);
                        // dfs(child, prev);
                        return;
                    } else {
                        // adj[child].push_back(newChild);
                        // dfs(newChild, child);
                    }
                }
            }
        }
        adj[node].push_back(child);
        dfs(child, node);
    }
}

void solve(int N, int L) {
    n=N;
    // dis=vector<vector<int>>(N+1, vector<int>(N+1, 0));
    adj=vector<vector<int>>(N+1);
    vis=vector<bool>(N+1, false);
    dfs(1, -1);

    vector<pair<int, int>> ans;

    for(int i=1; i<=N; i++) {
        for(int j=0; j<adj[i].size(); j++) ans.push_back({min(i, adj[i][j]), max(i, adj[i][j])});
    }

    // cerr << endl;
    sort(ans.begin(), ans.end());
    for(int i=0; i<ans.size(); i++) {
        if(i != 0 && ans[i] == ans[i-1]) continue;
        // cerr << ans[i].first << ' ' << ans[i].second << endl;
        answer(ans[i].first, ans[i].second);
    }
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...