📜  门| GATE-CS-2003 |第 70 题

📅  最后修改于: 2021-09-27 05:44:10             🧑  作者: Mango

令 G (V, E) 是一个有 n 个顶点的有向图。 G 中从 v i到 v j 的路径是顶点序列 (v i , v i+1 , ……., v j ) 使得 (vk, v k+1 ) ∈ E 表示 i 到 j – 1 中的所有 k。简单路径是没有顶点出现多次的路径。
设 A 是一个 nxn 数组,初始化如下

GATECS2003Q70

考虑以下算法。

for i = 1 to n
   for j = 1 to n
      for k = 1 to n
         A [j , k] = max (A[j, k] (A[j, i] + A [i, k]); 

对于上述算法终止后的所有 j 和 k,以下哪项陈述一定是正确的?
(A) A[j, k] ≤ n
(B)如果 A[j, k] ≥ n – 1,则 G 有一个哈密顿循环
(C)如果存在从 j 到 k 的路径,则 A[j, k] 包含从 j 到 k 的最长路径镜头
(D)如果存在一条从 j 到 k 的路径,则从 j 到 k 的每条简单路径都包含最多的 A[j, k] 条边答案: (D)
解释:

In the original input matrix,  A[j , k] is 1 if there
is an edge from j to k, else 0.

Below expression is important to note:

A[j , k] = max(A[j, k] (A[j, i] + A [i, k]);

This expression puts the count of maximum edges on a path from
j to k.  In this expression, we consider every vertex k that can 
become an intermediate vertex and can give longer path.

这个问题的测验