如何确定邻接矩阵给出的有向图是否包含三角形(长度为3的周期)?我试过这个功能,但速度太慢了。
int check()
{
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
if (matrix[i][j] == 1)
for (int k = 1; k <= n; k++)
if (matrix[j][k] == 1 && matrix[k][i] == 1)
{
a = i;
b = j;
c = k;
return 1;
}
return 0;
}
图形没有循环和多条边。 V <= 5000
,E = 2 * V
答案 0 :(得分:0)
将图形表示转换为邻接列表(在O(n ^ 2)中),然后循环遍历所有顶点并检查它们的邻居和邻居。这是在O(n * d ^ 2)中完成的,其中d是顶点度,并且从E = 2 * V,它平均为2。总运行时间为O(n ^ 2)。
代码草图(在python中):
<textarea id="to_be_translated" style="width:100%"></textarea>