有向图的邻接表存储强连通判断
Tags: 有向图
假设有向图G采用邻接表存储,设计一个算法,判断图G是否是强连通图。若是则返回yes;否则返回no。(图中顶点信息为整型数据。)
输入
第一行为图中顶点的个数n;
第二行为图的边的条数e;
接下来e行,每行是一条边依附的两个顶点信息。
输出
强连通图输出yes,否则输出no.
样例输入
5
7
0 1
1 2
1 3
2 3
3 0
3 4
4 0
样例输出
yes
详细代码
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct Node{
int data[50][50];
}Link;
int main()
{
Link l=(Link)malloc(sizeof(Link));
memset(l->data,0,sizeof(l->data));
int n,m;
scanf("%d",&n);
scanf("%d",&m);
int x,y;
while(m–)
{
scanf("%d %d",&x,&y);
l->data[x][y]=1;
}
int flag=1;
for(int i=0;i<n-1;i++)
{
if(l->data[i][i+1]0)
{
flag=0;
break;
}
}
if(flag1&&l->data[n-1][0]==1)
{
printf(“yes”);
}
else
{
printf(“no”);
}
return 0;
}