關聯矩陣

iamzxf發表於2014-11-21

 有一個n個結點m條邊的有向圖,請輸出他的關聯矩陣。

輸入格式

  第一行兩個整數nm,表示圖中結點和邊的數目。n<=100,m<=1000
  接下來m行,每行兩個整數ab,表示圖中有(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 00
-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



    這個題大一的同學可以拿來練手,練習一下查閱相關資料、閱讀試題的能力。

    本文用動態陣列寫的,參考程式碼如下:

#include <stdio.h>
//圖的增廣關聯矩陣

int main()
{
	int m,n;	//n代表結點數,m代表邊數
	int **a;
	int i,j;
	int begin,end;

	scanf("%d%d",&n,&m);
	a=new int *[n];
	for(i=0;i<n;i++)
		a[i]=new int [m];

	for(i=0;i<n;i++)
		for(j=0;j<m;j++)
			a[i][j]=0;

	
	for(j=0;j<m;j++)	 //邊的編號
	{
		scanf("%d%d",&begin,&end);
		a[begin-1][j]=1;
		a[end-1][j]=-1;
	}

	for(i=0;i<n;i++){
		for(j=0;j<m;j++)
			printf("%3d",a[i][j]);
		putchar('\n');
	}
	
	return 0;
}

執行結果如下:





相關文章