Submission #1256481

#TimeUsernameProblemLanguageResultExecution timeMemory
1256481Mer123haba456Island Hopping (JOI24_island)C++20
2 / 100
3 ms436 KiB
#include <bits/stdc++.h>
using namespace std;
#include "island.h"
#define N lli(500)
typedef long long int lli;
typedef vector<lli> vlli;
typedef pair<lli,lli> plli;
typedef vector<plli> vplli;


vlli gr[N];
set<plli> cev;

plli par[N];

lli bul(lli v){
	if(par[v].first == v)
		return par[v].first;
	return par[v].first = bul(par[v].first);
}

bool birlestir(lli a, lli b){
	a = bul(a);
	b = bul(b);
	if(a == b)
		return 0;
	if(par[a].second >= par[b].second)
		par[b].first = a;
	else
		par[a].first = b;
	if(par[a].second == par[b].second)
		par[a].second++;
	return 1;
}

bool isle[N];

void solve(int n, int l) {
	//cout << n << " " << l << endl;
	for(lli i = 0;i<=n;i++)
		par[i] = {i,0};
	for(lli j = 1;j<n;j++){
		for(lli i = 2;i<=n;i++){
			if(isle[i])
				continue;
			lli su = query(i,j);
			//cout << i << " " << j << " " << su << endl;
			if(!birlestir(i,su))
				isle[i] = 1;
			else{
				gr[i].push_back(su);
				gr[su].push_back(i);
				cev.insert({min(i,su), max(i,su)});
			}
			//cout << i << " " << j << " sonda" << su << endl;
		}
	}
	//cout << "sonda" << endl;
	for (plli say : cev) {
		answer(say.first, say.second);
	}
}
#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...