This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "parks.h"
#include <bits/stdc++.h>
using namespace std;
#define fir first
#define sec second
const int mxN=200020;
int N;
int A[3][mxN];
bool Chk[3][mxN];
int par[mxN];
vector <int> u, v, a, b;
int findpar(int a)
{
return (par[a]==a ? a : par[a]=findpar(par[a]));
}
void onion(int a, int b)
{
int p=findpar(a), q=findpar(b);
if(p!=q) par[p]=q;
}
int construct_roads(std::vector<int> x, std::vector<int> y) {
N=x.size();
for(int i=1;i<=100000;i++) for(int j=0;j<3;j++) A[j][i]=-1;
for(int i=0;i<N;i++)
{
if(x[i]==2) A[0][y[i]/2]=i;
else if(x[i]==4) A[1][y[i]/2]=i;
else A[2][y[i]/2]=i;
}
for(int i=0;i<N;i++) par[i]=i;
for(int i=1;i<100000;i++)
{
for(int j=0;j<=2;j++)
{
if(A[j][i]!=-1 && A[j][i+1]!=-1) onion(A[j][i], A[j][i+1]);
}
}
for(int i=1;i<=100000;i++)
{
for(int j=0;j<2;j++)
{
if(A[0][i]!=-1 && A[1][i]!=-1) onion(A[0][i], A[1][i]);
if(A[1][i]!=-1 && A[2][i]!=-1) onion(A[1][i], A[2][i]);
}
}
for(int i=0;i<N-1;i++)
{
if(findpar(i)!=findpar(i+1))
{
return 0;
}
}
for(int i=1;i<100000;i++)
{
for(int j=0;j<3;j++)
{
if(A[j][i]!=-1 && A[j][i+1]!=-1)
{
u.push_back(A[j][i]); v.push_back(A[j][i+1]);
b.push_back(2*i+1);
if(j==0) a.push_back(1);
else if(j==2) a.push_back(7);
else if(i%2==0) a.push_back(5);
else a.push_back(3);
}
}
}
for(int i=1;i<=100000;i++)
{
if(A[0][i]!=-1 && A[1][i]!=-1 && !Chk[0][i-1])
{
Chk[0][i]=true;
u.push_back(A[0][i]); v.push_back(A[1][i]);
a.push_back(3);
if(i%2==0) b.push_back(2*i+1);
else b.push_back(2*i-1);
}
if(A[1][i]!=-1 && A[2][i]!=-1 && !Chk[2][i-1])
{
Chk[2][i]=true;
u.push_back(A[1][i]); v.push_back(A[2][i]);
a.push_back(5);
if(i%2==0) b.push_back(2*i-1);
else b.push_back(2*i+1);
}
}
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... |