首页 > 试题广场 >

考虑将一个有向图g转换成它对应的无向图g‘。图g’有一条从顶

[问答题]
考虑将一个有向图g转换成它对应的无向图g‘。图g’有一条从顶点u到顶点v的边,当且仅当原图g中有一条u到v或者v到u的边。图g是由如下的它的邻接矩阵(adjacency matrix)G表示的。如果N是g中顶点的数量,那么G是一个NXN的矩阵,它的元素是全0或者全1。假设g的顶点是这样命名的: v0, v1,..,vN-1。那么如果有一条从vi到vj的边,那么G[i][j]为1,否则为0。注意,邻接矩阵对角线上的元素总是1,而无向图的邻接矩阵是对称的。只用一个简单的循环就能实现这段代码:
void col_ convert(int *G,int dim) {
  int i,j;
  for(i=0;i<dim;i++)
    for(j = 0;j < dim; j++)
      G[j*dim + 1] = G[j*dim + i] || G[i*dim + j];
}
你的工作是设计一个运行得尽可能快的函数。

这道题你会答吗?花几分钟告诉大家答案吧!