#include<bits/stdc++.h>
using namespace std;
#define pb push_back
#define X first
#define Y second
int n,m,x[100005],y[100005],wall1,wall2,a1,b1,a2,b2,go[100005][4],st,d[100005];
int nxt[100005][4],p[100005],rev[100005],num,dir,val;
//right=0 down=1 left 2 up=3
vector<pair<pair<int,int>,int > > v;
vector<int> g;
set<int> s;
void dfs(int u)
{
//printf("->%d: coor = %d %d, dir=%d\n",u,x[u],y[u],dir);
for(int i=0;i<4;i++)
{
int way=(dir+2+i)%4;
if(go[u][way]!=0&&go[u][way]!=p[u])
{
int bug=d[go[u][way]];
if(bug!=1)
{
if(bug==-1)
{
d[go[u][way]]=0;
g.pb(go[u][way]);
p[go[u][way]]=u;
dir=way;
rev[go[u][way]]=nxt[u][way];
dfs(go[u][way]);
/*if(val==-1)
{
for(int j=0;j<(int)g.size();j++)
{
//printf("%d ",g[i]);
d[g[j]]=1;
}
g.clear();
}
if(g.size()==0)return;*/
}else
{
//printf("last=%lld %lld %lld\n",go[u][way],u,p[u]);
//printf("breakloop%d %d\n",u,i);
for(int j=0;j<(int)g.size();j++)
{
//printf("%d ",g[i]);
d[g[j]]=1;
}
//printf("\n");
s.erase(nxt[u][way]);
num=u;
while(1)
{
if(p[num]==0)break;
s.erase(rev[num]);
num=p[num];
}
g.clear();
if(g.size()==0)return;
}
}
}
}
//val=-1;
}
int main()
{
memset(d,-1,sizeof d);
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d%d",&x[i],&y[i]);
v.pb({{x[i],y[i]},i});
}
scanf("%d",&m);
for(int i=1;i<=m;i++)
{
s.insert(i);
scanf("%d%d",&wall1,&wall2);
a1=x[wall1];
b1=y[wall1];
a2=x[wall2];
b2=y[wall2];
if(a1>a2)
{
swap(a1,a2);
swap(wall1,wall2);
}
if(a1<a2)
{
go[wall1][1]=wall2;
go[wall2][3]=wall1;
nxt[wall1][1]=i;
nxt[wall2][3]=i;
}
if(b1>b2)
{
swap(b1,b2);
swap(wall1,wall2);
}
if(b1<b2)
{
go[wall1][0]=wall2;
go[wall2][2]=wall1;
nxt[wall1][0]=i;
nxt[wall2][2]=i;
}
}
/*for(int i=0;i<4;i++)
{
printf("%d ",go[2][i]);
}
printf("\n");*/
sort(v.begin(),v.end());
for(int i=0;i<(int)v.size();i++)
{
st=v[i].Y;
if(d[st]==-1)
{
val=0;
//printf("start=%d\n",st);
d[st]=0;
dir=2;
g.pb(st);
dfs(st);
/*for(auto it:s)printf("%d\n",it);
printf("\n");*/
}
}
printf("%d\n",(int)s.size());
for(auto it:s)printf("%d\n",it);
}
Compilation message
flood.cpp: In function 'int main()':
flood.cpp:70:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
70 | scanf("%d",&n);
| ~~~~~^~~~~~~~~
flood.cpp:73:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
73 | scanf("%d%d",&x[i],&y[i]);
| ~~~~~^~~~~~~~~~~~~~~~~~~~
flood.cpp:76:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
76 | scanf("%d",&m);
| ~~~~~^~~~~~~~~
flood.cpp:80:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
80 | scanf("%d%d",&wall1,&wall2);
| ~~~~~^~~~~~~~~~~~~~~~~~~~~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
724 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
724 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
724 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
724 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
724 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
724 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
724 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
724 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
1 ms |
724 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
20 ms |
3192 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
80 ms |
11072 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
64 ms |
10188 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
152 ms |
12452 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Execution timed out |
2066 ms |
13904 KB |
Time limit exceeded |
2 |
Halted |
0 ms |
0 KB |
- |