week 7 A Floyd演算法解決傳遞閉包問題

2021-10-04 20:27:32 字數 1173 閱讀 1192

眾所周知,tt 有乙隻魔法貓。

這一天,tt 正在專心致志地玩《貓和老鼠》遊戲,然而比賽還沒開始,聰明的魔法貓便告訴了 tt 比賽的最終結果。tt 非常詫異,不僅詫異於他的小貓咪居然會說話,更詫異於這可愛的小不點為何有如此魔力?

魔法貓告訴 tt,它其實擁有一張遊戲勝負表,上面有 n 個人以及 m 個勝負關係,每個勝負關係為 a b,表示 a 能勝過 b,且勝負關係具有傳遞性。即 a 勝過 b,b 勝過 c,則 a 也能勝過 c。

tt 不相信他的小貓咪什麼比賽都能**,因此他想知道有多少對選手的勝負無法預先得知,你能幫幫他嗎?

輸入輸出說明:

input:

第一行給出資料組數。

每組資料第一行給出 n 和 m(n , m <= 500)。

接下來 m 行,每行給出 a b,表示 a 可以勝過 b。

output:

對於每一組資料,判斷有多少場比賽的勝負不能預先得知。注意 (a, b) 與 (b, a) 等價,即每乙個二元組只被計算一次。

樣例

input:

3 3 3

1 21 3

2 33 2

1 22 3

4 21 2

3 4ouput:

0 0

4

此題最容易忽視的一點就是,在計算未知勝負關係的時候,要排除重複的情況,不能倒過來又是乙個未知關係,在條件判斷中加入乙個(i#include

using

namespace std;

intmain()

for(

int k=

1;k<=m;k++

)for

(int i =

1; i <=m; i++)}

int sum =0;

for(

int i =

1; i <=m; i++

)for

(int j =

1; j <= m; j++)if

(p[j]

[i]==

false

&& p[i]

[j]==

false

&&(i < j)

) cout << sum << endl;

}return0;

}

演算法練習week7 leetcode23

題目大意 給出若干已經排好序鍊錶的頭節點指標,將它們合併成乙個成序的鍊錶,返回其頭結點指標。示例 給定鍊錶 1 2 3 和 4 6 8,則應當返回鍊錶 1 2 3 4 6 8的頭節點指標。解題思路 一開始看到這道題,我覺得會比較複雜。因為要排成有序鍊錶需要先逐個比較,再將節點插入對應的位置。後來聯想...

Week7 TT的旅行日記 最短路演算法

題目描述 眾所周知,tt 有乙隻魔法貓。今天他在 b 站上開啟了一次旅行直播,記錄他與魔法貓在喵星旅遊時的奇遇。tt 從家裡出發,準備乘坐貓貓快線前往喵星機場。貓貓快線分為經濟線和商業線兩種,它們的速度與價錢都不同。當然啦,商業線要比經濟線貴,tt 平常只能坐經濟線,但是今天 tt 的魔法貓變出了一...

Week7 TT 的魔法貓 弗洛伊德演算法

題目描述 眾所周知,tt 有乙隻魔法貓。這一天,tt 正在專心致志地玩 貓和老鼠 遊戲,然而比賽還沒開始,聰明的魔法貓便告訴了 tt 比賽的最終結果。tt 非常詫異,不僅詫異於他的小貓咪居然會說話,更詫異於這可愛的小不點為何有如此魔力?魔法貓告訴 tt,它其實擁有一張遊戲勝負表,上面有 n 個人以及...