Floyedg(傳遞閉包

2021-09-17 01:54:13 字數 821 閱讀 6576

有n(1<=n<=100)個學生參加程式設計比賽。

給出m條實力資訊。(1<=m<=4500)

其中每一條的格式為 a b (1<=a<=n,1<=b<=n,a!=b) 意思是a的實力比b強。

如果a比b強且b比c強,那麼a一定比c強。

問最後有多少名學生可以確定他的排名。

保證輸入資訊不存在矛盾

思路

一開始先看的floyed演算法,看了乙個模模糊糊就來做的這個題,做完這個題發現這個題floyed模板好理解呢

就是將那個模板的判斷條件改一下

一開始輸入的a和b 用乙個二位陣列存,表示兩個同學之間存在名次關係

然後再借助k來判斷關係

如果a和k之間有關係,而且k和b之間也有關係(不能換位置

那麼a和b就有名次關係

即判斷條件

if(e[i][k]==1&&e[k][j]==1)

e[i][j]=1;

最後

再從第乙個的同學開始找他和其他人的關係

如果關係等於n-1他的名次就確定了(出度+入度=頂點數-1

**如下

#include#includeusing namespace std;

int main()

for(k=1;k<=n;k++)

}} ans=0;

for(i=1;i<=n;i++)

if(count==n-1)

ans++;

} cout

}

flord 傳遞閉包

傳遞指對於乙個節點i,如果j能到i,i能到k,那麼j就能到k。傳遞閉包,就是把圖中所有滿足這樣傳遞性的節點都弄出來,計算完成後,我們也就知道任意兩個節點之間是否相連。break 指跳出一層迴圈 continue 結束本次迴圈,跳過本次判斷語句 每只奶牛的技能獨一無二,如果給奶牛們排序的話,能確定自己...

floyd傳遞閉包

傳遞閉包 我第一反應是凸包emmm 就是把具有傳遞性的關係傳遞開。一般我們用一鄰接矩陣儲存。比如許多的並查集解決的問題,如果需要細緻 效率o n 可以用傳遞閉包去做。看一道題吧,poj1094,不等式的傳遞性。這道題在處理方面,d i,j 為1時表示i1 矛盾與不確定,優先矛盾。2 若加入了幾個,發...

閉包傳遞(floyed)

題目大意 n代表母牛的個數,m代表給定的資訊的組數。每一組數包括a,b.代表b崇拜a 突然發現可以用tarjan演算法做 然後問你最終有多少母牛的地位是確定的。include include include include include include include include includ...