#include "island.h"
#include "iostream"
#include "bits/stdc++.h"
using namespace std;
int const MAXN=310;
int vis[MAXN]={};
int val[MAXN][MAXN]={};
bool nei[MAXN][MAXN]={};
int deg[MAXN]={};
int par[MAXN]={};
int ask(int i,int j)
{
if (val[i][j]==0)
val[i][j]=query(i,j);
return val[i][j];
}
int root(int n)
{
return (par[n]==n?n:par[n]=root(par[n]));
}
void merge(int u,int v)
{
u=root(u);
v=root(v);
par[v]=u;
}
void solve(int N, int L)
{
for (int i=1;i<=N;i++)
par[i]=i;
int cnt=0;
for (int i=1;i<=N;i++)
{
int j=1;
while (j<N&&cnt<N-1)
{
int z=ask(i,j);
if (z<i)
{
break;
}
if (root(i)==root(z))
{
j++;
break;
}
if (ask(z,deg[z]+1)==i)
{
cnt++;
nei[i][z]=1;
merge(i,z);
deg[i]++;
deg[z]++;
}
else
break;
j++;
}
}
set<pair<int,int>>ed;
for (int i=1;i<=N;i++)
{
for (int j=i+1;j<=N;j++)
if (nei[i][j])
ed.insert({i,j});
}
for (auto [i,j]:ed)
{
// cout<<i<<' '<<j<<endl;
answer(i,j);
}
}
| # | 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... |