Submission #1160334

#TimeUsernameProblemLanguageResultExecution timeMemory
1160334WH8Island Hopping (JOI24_island)C++20
65 / 100
3 ms432 KiB
#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 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...