题目描述
极简题解
#include<stdio.h>
int n,m,vertex[1005],start[1005],end[1005];
bool visit[1005],path[1000][1000];
bool flag=0;
void dfs(int tmp,int target)
{
for(int i=1;i<=n;i++)
{
if(path[tmp][i]&&!visit[i])
{
visit[i]=1;
if(i==target)
{
printf("yes\n");n=0;flag=1;
}
dfs(i,target);
}
}
}
int main()
{
int vi,vj;
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)scanf("%d",&vertex[i]);
for(int i=0;i<m;i++)
{
scanf("%d%d",&start[i],&end[i]);
path[start[i]][end[i]]=1;
}
scanf("%d%d",&vi,&vj);
dfs(vi,vj);
if(flag==0)printf("no");
return 0;
}