Submission #1166178

#TimeUsernameProblemLanguageResultExecution timeMemory
1166178dnnndaIsland Hopping (JOI24_island)C++20
2 / 100
227 ms752 KiB
#include<bits/stdc++.h>
#include "island.h"
using namespace std;
#define S second
#define F first
#define ll long long
//#define int long long
//#pragma GCC optimize("Ofast, unroll-loop")
//#pragma GCC target("avx,avx2")
#pragma GCC optimize("O3")
#define init(arr,val) memset(arr,val,sizeof arr)
const int inf=0x3f3f3f3f;
const ll inff=0x3f3f3f3f3f3f3f3f;
const int X=1000000007;
//const int X=998244353;

/*
int query(int v, int k){
    cout << "query " << v << ' ' << k << '\n';
    int ret; cin >> ret;
    return ret;
}
void answer(int u, int v){
    cout << "answer: " << u << ' ' << v << '\n';
}*/
int p[305], dis[305][305];
int root(int x){
    if(p[x]<0) return x;
    return p[x]=root(p[x]);
}
void joint(int a, int b){
    int ra=root(a), rb=root(b);
    if(ra==rb) return;
    answer(a,b);
    p[ra]+=p[rb];
    p[rb]=ra;
    return;
}
void solve(int n, int L){
    init(p,-1);
    for(int i=1 ; i<=n ; i++) for(int j=1 ; j<n ; j++) dis[i][j]=query(i,j);
    for(int j=1 ; j<n ; j++) for(int i=1 ; i<=n ; i++){
        for(int d=1 ; d<=j ; d++){
            if(root(i)!=root(dis[i][d])){
                joint(i,dis[i][d]);
                break;
            }
        }
    }
    return;
}
#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...