cf Ping-Pong (Easy Version)

时间:2022-09-08 06:34:16

http://codeforces.com/contest/320/problem/B

这道题看了很长时间没看懂, 就是个dfs;

 #include <cstdio>
#include <cstring>
#define maxn 2000
using namespace std; int a[maxn],b[maxn];
bool vis[maxn];
int cnt=; bool dfs(int x,int y)
{
vis[x]=true;
if(x==y) return ;
for(int i=; i<=cnt; i++)
{
if(!vis[i]&&((a[i]<a[x]&&a[x]<b[i])||(a[i]<b[x]&&b[x]<b[i])))
{
if(dfs(i,y)) return true;
}
}
return false;
} int main()
{
int n,x,y,c;
scanf("%d",&n);
memset(vis,false,sizeof(vis));
for(int i=; i<=n; i++)
{
scanf("%d%d%d",&c,&x,&y);
if(c==)
{
a[cnt]=x; b[cnt++]=y;
}
else
{
memset(vis,false,sizeof(vis));
if(!dfs(x,y)) printf("NO\n");
else printf("YES\n");
}
}
return ;
}