#include "parks.h"
#include <bits/stdc++.h>
using namespace std;
const int maxn=5*1e5+5;
struct fount
{
int x,y,i;
fount(){}
fount(int _x,int _y,int _i)
{
x=_x;
y=_y;
i=_i;
}
};
bool cmp(fount f1,fount f2)
{
return f1.y<f2.y;
}
int c;
fount p[maxn];
map<pair<int,int>,int> mp;
vector<int> u,v,a,b;
int used[maxn];
void dfs(int i,int pr)
{
if(pr!=-1)
{
v.push_back(i-1);
u.push_back(pr-1);
}
int cnt=0;
used[i]=1;
pair<int,int> h={p[i].x,p[i].y};
h.first+=2;
if(mp[h]&&!used[mp[h]])
{
cnt++;
dfs(mp[h],i);
}
h.first-=4;
if(mp[h]&&!used[mp[h]])
{
cnt++;
dfs(mp[h],i);
}
h.first+=2;
h.second+=2;
if(mp[h]&&!used[mp[h]])
{
cnt++;
dfs(mp[h],i);
}
h.second-=4;
if(mp[h]&&!used[mp[h]])
{
cnt++;
dfs(mp[h],i);
}
}
int construct_roads(std::vector<int> x, std::vector<int> y)
{
c=x.size();
a.resize(c-1);
b.resize(c-1);
for(int i=0;i<x.size();i++)
{
p[i+1]={x[i],y[i],i};
mp[{x[i],y[i]}]=i+1;
}
dfs(1,-1);
sort(p,p+c,cmp);
for(int i=1;i<c;i++)
{
if(p[i-1].y+2!=p[i].y)return 0;
a[i-1]=3;
b[i-1]=p[i-1].y+1;
}
build(v,u,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... |