7-2 出度为0 (20 分)
作者:互联网
设有向图G,试找出图中出度为0的点有多少个!
输入格式:
输入数据有多组 每组数据第一行为一个正整数vertexnum(0<vertexnum<500),代表G的顶点数目。 接下来是有向图G的邻接矩阵!
输出格式:
对于每组数据,请在一行里输出出度为0的顶点个数。
输入样例:
在这里给出一组输入。例如:
3
0 0 1
0 0 0
1 0 0
5
0 0 0 0 1
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 1 0
结尾无空行
输出样例:
在这里给出相应的输出。例如:
1
3
结尾无空行
C代码如下:
#include<stdio.h>
int main(){
int x;
int i=0,j=0;
while((scanf("%d",&x))!=EOF){
int a[x][x];
int flag=0;
int num=x;
for(i=0;i<x;i++){
for(j=0;j<x;j++){
scanf("%d",&a[i][j]);
if(a[i][j]==1){
flag=1;
}
}
if(flag){
num--;
flag=0;
}
}
printf("%d\n",num);
}
return 0;
}
思路:因为输出中已经给出邻接矩阵了,所以在代码中就不用建立邻接矩阵了,直接使用输入中的邻接矩阵进行判断即可。题目要求求出有向图的中出度为0的顶点的个数,在矩阵中选取一个方向为出,一个方向为如即可。这里选择排到列为出度,列到排位入度。如:若G->arc[0][1]=1的话说明下标为0的顶点有一出度,该顶点连接到下标为1的顶点。我们边输入邻接矩阵边判断:设置一个标志flag,令每一行的flag为0,如果在这一行有1输出,那么就让flag设置为1,表示对应这一行的顶点有出度。设置num初始值为x(顶点个数),若flag=1(表示该顶点出度不为0),则num–,最后得到的num就是出度为0的顶点个数。
标签:20,int,出度,邻接矩阵,flag,num,顶点 来源: https://blog.csdn.net/weixin_51929568/article/details/121478257