#include "island.h"
#include <bits/stdc++.h>
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2")
//#define int long long
#define pii pair<int,int>
#define vi vector<int>
#define ff first
#define ss second
#define sp << " " <<
#define all(x) x.begin(),x.end()
#define big(x) ((int)(x.size()))
using namespace std;
const int MOD = 1e9+7, LIM = 1e6+1, inf = 2e9;
struct DSU {
vi dad;
DSU (int nn) {
dad.resize(nn+1);
iota(all(dad),0ll);
}
int find(int x) {
if (x == dad[x]) return x;
return dad[x] = find(dad[x]);
}
void unite(int x,int y) {
dad[find(x)] = find(y);
}
};
void solve(int N, int L) {
vi active(N+1,1),deg(N+1,0);
int ctr = 0;
DSU dsu(N);
while (ctr < N-1) {
vi merged(N+1,0);
for (int i = 1;i<=N && ctr < N-1;i++) {
if (!active[i] || merged[i]) continue;
int j = query(i,deg[i]+1);
if (dsu.find(j) == dsu.find(i)) active[i] = 0;
else {
merged[i] = merged[j] =1 ;
dsu.unite(i,j);
answer(i,j);
ctr++;
deg[i]++,deg[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... |