其他分享
首页 > 其他分享> > 7-2 出度为0 (20 分)

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