Floyd传递闭包:注意三层循环的顺序

Floyd传递闭包是隔代建立联系的一种图论算法,举个例子,a可以指向b,b可以指向c,那么a就可以指向c。

Floyd传递闭包算法的时间复杂度是O(n3),用三层循环实现,如下图所示(有向无权图用邻接矩阵存储):

//Floyd传递闭包
for(k=1;k<=n;k++)
{
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=n;j++)
        {
            if(mp[i][k]==true&&mp[k][j]==true)
            {
                mp[i][j]=true;
            }
        }
    }
}

需要注意的是三层循环的顺序,一定不能颠倒,一定要以k为桥梁连接i和j。

你可能感兴趣的:(Floyd传递闭包:注意三层循环的顺序)