我下面的这张图已经被读入2D数组了。
9
A B C D E F G H I
A - 2 - - - 9 5 - -
B 2 - 4 - - - 6 - -
C - 4 - 2 - - - 5 -
D - - 2 - 1 - - 1 -
E - - - 1 - 6 - - 3
F 9 - - - 6 - - - 1
G 5 6 - - - - - 5 2
H - - 5 1 - - 5 - 4
I - - - - 3 1 2 4 -
但是,由于该图是对称的,因此不需要阅读该文件的所有边缘。此图中确实只有15条边和9个顶点。
填充图时,我需要结果如下:
<A, B, 2> <A, F, 9> <A, G, 5> <B, C, 4> <B, G, 1> <C, D, 2> <C, H, 5>
<D, E, 1> <D, H, 1> <E, F, 6> <E, I, 3> <F, I, 1> <G, H, 5> <G, I, 2> <H, I, 4>
如您所见,有15条边,但是在上图中看起来总共有30条边。
我为图创建了两个结构
struct Edge
{
int s; // source
int d; // destination
int w; // weight
};
struct Graph
{
int v; //number of vertices
int e; //number of edges
struct Edge* edge;
};
如何使用上面的2D数组中的信息填充图形?我必须考虑到它是对称的,即该图的边缘是2D数组所示的一半。
谢谢。