题目描述:
问题描述 有一个n个结点m条边的有向图,请输出他的关联矩阵。 输入格式 第一行两个整数n、m,表示图中结点和边的数目。n<=100,m<=1000。 接下来m行,每行两个整数a、b,表示图中有(a,b)边。 注意图中可能含有重边,但不会有自环。 输出格式 输出该图的关联矩阵,注意请勿改变边和结点的顺序。 样例输入 5 9 1 2 3 1 1 5 2 5 2 3 2 3 3 2 4 3 5 4 样例输出 1 -1 1 0 0 0 0 0 0 -1 0 0 1 1 1 -1 0 0 0 1 0 0 -1 -1 1 -1 0 0 0 0 0 0 0 0 1 -1 0 0 -1 -1 0 0 0 0 1
代码如下:
1 #include <stdio.h> 2 #include <string.h> 3 using namespace std; 4 5 int main(void) 6 { 7 int n,m,a,b; 8 int map[100+1][1000+1]; 9 memset(map,0,sizeof(map)); 10 scanf("%d%d",&n,&m); 11 for (int i=0 ; i<m ; i++) 12 { 13 scanf("%d%d",&a,&b); 14 map[a-1][i] = 1; 15 map[b-1][i] = -1; 16 } 17 18 for (int i=0 ; i<n ; i ++) 19 { 20 for (int j=0 ; j<m ; j ++) 21 printf("%d ",map[i][j]); 22 printf("\n"); 23 } 24 return 0; 25 }
解题思路:
题目中的n结点为行,m边为列
依照样例,将点(a-1,m)设为1,点(b-1,m)设为-1
最后输出整个二维数组