图论基础

用邻接矩阵存储有向图,并输出各个定点的出入度

由于没有权值,两个定点之间的权值为1,没有注意memset(e,0,sizeof(e));我考试问题就在这。。。气炸了

测试样例一:

 1 input:
 2 7 9
 3 1 2
 4 2 3
 5 2 5
 6 2 6
 7 3 5
 8 4 3
 9 5 2
10 5 4
11 6 7
12 0 0
13 output
14 1 3 1 1 2 1 0
15 0 2 2 1 2 1 1
View Code

测试样例二:

 1 input:
 2 5 5
 3 1 2
 4 2 3
 5 3 4
 6 4 5
 7 5 1
 8 output:
 9 1 1 1 1 1
10 1 1 1 1 1
View Code

考完试写的

 1 # include<stdio.h>
 2 # include<string.h>
 3 # define MAX 105
 4 int e[MAX][MAX];
 5 int main()
 6 {
 7     int n,m,i,j,u,v,od,id;
 8     while(1)
 9     {
10         scanf("%d%d",&n,&m);
11         if(n==0 && m==0) break;
12         memset(e,0,sizeof(e));
13         //构建邻接矩阵
14         for(i=1; i<=m; i++)
15         {
16             scanf("%d%d",&u,&v);
17             e[u-1][v-1] = 1;
18         }
19         //出度
20         for(i=0; i<n; i++)
21         {
22             od = 0;
23             for(j=0; j<n; j++) od += e[i][j];
24             if(i==0) printf("各点的出度依次是:%d",od);
25             else printf(" %d",od);
26         }
27         printf("\n");
28         //入度
29         for(i=0; i<n; i++)
30         {
31             id = 0;
32             for(j=0; j<n; j++) id += e[j][i];
33             if(i==0) printf("各点的入度依次是:%d",id);
34             else printf(" %d",id);
35         }
36         printf("\n");
37     }
38     return 0;
39 }
View Code

 

posted @ 2013-12-12 17:17  天天AC  阅读(246)  评论(0编辑  收藏  举报