#include "parks.h"
#include <bits/stdc++.h>
#define fi first
#define se second
using namespace std;
typedef pair<int,int> pii;
const int MAXN = 2e5+5;
int N, P[MAXN], X, Y, A, B, i, j;
vector <int> u, v, a, b;
set <pii> C;
map <pii,int> D;
int find(int x) {
if (P[x] == x) return x;
return P[x] = find(P[x]);
}
void join(int x,int y) {
x = find(x);
y = find(y);
P[x] = y;
}
void add() {
if (!C.count({A,B})) {
C.insert({A,B});
u.push_back(i);
v.push_back(j);
a.push_back(A);
b.push_back(B);
join(i,j);
}
}
int construct_roads(vector<int> x,vector<int> y) {
N = x.size();
for (i=0;i<N;i++) {
D[{x[i],y[i]}] = i;
P[i] = i;
}
for (auto f : D) {
X = f.fi.fi;
Y = f.fi.se;
i = f.se;
if (D.count({X,Y+2})) {
A = X + 1 - ((X^Y)&2);
B = Y + 1;
j = D[{X,Y+2}];
add();
}
if (D.count({X+2,Y})) {
A = X + 1;
B = Y - 1 + ((X^Y)&2);
j = D[{X+2,Y}];
add();
}
}
for (i=1;i<N;i++) {
if (find(i) != find(0)) {
return 0;
}
}
build(u,v,a,b);
return 1;
}
# | 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... |