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 <bits/stdc++.h>
using namespace std;
int dl[]={1,1,1,0,0,-1,-1,-1};
int dc[]={-1,0,1,-1,1,1,-1,0};
int dl2[]={1,0,0,-1};
int dc2[]={0,1,-1,0};
int n,t,i,sol[150005],nr,fr[150005],j,k;
pair <int,int> loc,b;
queue <int> q;
struct wow
{
int x,y;
}v[150005];
int main()
{
#ifdef HOME
ifstream cin("date.in");
ofstream cout("date.out");
#endif // HOME
cin>>n;
cin>>t;
for (i=1;i<=n;i++)
{
cin>>v[i].x>>v[i].y;
}
if (t==1)
{
q.push(1);
sol[++nr]=1;
fr[1]=1;
while (!q.empty())
{
loc={v[q.front()].x,v[q.front()].y};
q.pop();
for (i=0;i<4;i++)
{
b.first=loc.first+dl2[i];
b.second=loc.second+dc2[i];
for (j=1;j<=n;j++)
{
if (b.first==v[j].x&&b.second==v[j].y&&fr[j]==0)
{
sol[++nr]=j;
fr[j]=1;
q.push(j);
}
}
}
}
for (j=1;j<=n;j++)
{
if (fr[j]==1)
{
q.push(j);
}
}
while (!q.empty())
{
loc={v[q.front()].x,v[q.front()].y};
q.pop();
for (i=0;i<8;i++)
{
b.first=loc.first+dl[i];
b.second=loc.second+dc[i];
for (j=1;j<=n;j++)
{
if (b.first==v[j].x&&b.second==v[j].y&&fr[j]==0)
{
sol[++nr]=j;
fr[j]=1;
q.push(j);
}
}
}
}
for (i=1;i<=n;i++)
{
if (fr[i]==0)
{
cout<<"NO";
return 0;
}
}
cout<<"YES"<<'\n';
for (i=1;i<=n;i++)
{
cout<<sol[i]<<'\n';
}
}
return 0;
}
# | 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... |