样本输入:
4 7
1 2
2 3
3 1
4 1
2 2
4 2
4 3
第一行包含两个数字:
n和
米
-图形中的顶点和边的数量。下一个
m条线各包含两个数字,即边的起点和终点。输入可以包含多个边和循环。
我需要在其中打印邻接矩阵 ñ 行,每行有 n个零或一: 如果对应的一对顶点之间没有边,则为0;如果存在边,则为1。
样本输出:
0100
0110
1000
1110
答案 0 :(得分:1)
似乎这是一个难题或家庭作业问题,可能不应该自己尝试,而不仅仅是代码。您可以自行添加阅读内容或写出部分内容。
adjacency_list = [...] #adj list
n = ... #num vertices
m = ... #num edges
adjacency_matrix = [[0 for i in range(n)] for j in range(n)] # (numpy) = np.zeros((n,n))
for i,j in adjacency_list:
adjacency_matrix[i][j] = 1
答案 1 :(得分:1)
首先可以使用numpy
从大小为N
的零数组开始(在本例中为4)。然后,您可以将邻接列表用作邻接矩阵的索引,并将其分配给那些位置。
>>> import numpy as np
>>> mat = np.zeros((4,4))
>>> edges = np.array([[1,2],[2,3],[3,1],[4,1],[2,2],[4,2],[4,3]])
>>> edges -= 1
>>> mat[edges[:,0], edges[:,1]] = 1
>>> mat
array([[0., 1., 0., 0.],
[0., 1., 1., 0.],
[1., 0., 0., 0.],
[1., 1., 1., 0.]])