判断给定有向图是否存在回路
1000(ms)
10000(kb)
1465 / 3415
判断给定有向图是否存在回路。
输入
第一行为图中顶点的个数n; 第二行为途中弧度条数e; 第二行为顶点信息;接着e行为e条弧依附的两个顶点。
输出
该图是否存在回路,是输出yes;,不是输出no。
样例输入
4 4 A B C D A B A C B D C D
样例输出
no
using namespace std;
int map[105][105]={0},v[1005]={0};
int n,m,k=0;
void dfs(int x)
{
if(k) return;
for(int i=0;i<n;i++)
{
if(map[x][i]&&v[i]==0)
{
v[i]=1;
dfs(i);
v[i]=0;
}
else if(map[x][i])
k=1;
}
}
int main()
{
char a[20];
cin>>n>>m;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
while(m--)
{
char a,b;
cin>>a>>b;
map[a-'A'][b-'A']=1;
}
dfs(0);
if(k) cout<<"yes";
else cout<<"no";
return 0;
}