#include <bits/stdc++.h>
using namespace std;
#include "island.h"
#define f first
#define s second
int p[305];
int par(int x){
if(p[x]==0)return x;
return p[x]=par(p[x]);
}
bool merge(int a,int b){
int x=par(a),y=par(b);
if(x==y)return 0;
p[x]=y;
return 1;
}
void solve(int n, int L) {
int a[n+1];fill(a,a+n+1,0);
set<pair<int,int>> s;
for(int i=1;i<=n;i++){
// start asking whether a[i]+1
for(int ck=a[i]+1;ck<n-1;ck++){
int res=query(i, ck);
if(par(res)==par(i))break;
int cor=(ck==a[i]+1 ? i: query(res, a[res]+1));
if(cor==i){
a[res]++;
if(merge(i, res)) s.insert({i, res});
}
else break;
}
}
//~ assert(s.size()==n-1);
for(auto it:s){
//~ cout<<it.f<<" "<<it.s<<endl;
answer(it.f,it.s);
}
}
# | 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... |