題意:n個牛,給出m場比賽的比賽結果(前面的贏後面的),能力強的總是贏能力弱的,求最多有幾頭牛能確定能力排名
第一眼看題再看資料範圍,第一反應不是網路流就是建有向邊搞圖...
當乙個牛的能力可以確定時,當且僅當能贏它的牛加上輸給它的牛有n-1頭
可以發現,贏和輸的資訊是可以傳遞的
即當i能贏k且k能贏j時,i也能贏j。輸的資訊同理
這樣我們就能找到所有能贏i的牛和輸給i的牛
分別記錄贏和輸的資訊,floyd跑傳遞閉包,最後對每一頭牛判斷贏它和輸它的牛的總和是否等於n-1即可
floyd傳遞閉包
傳遞閉包 我第一反應是凸包emmm 就是把具有傳遞性的關係傳遞開。一般我們用一鄰接矩陣儲存。比如許多的並查集解決的問題,如果需要細緻 效率o n 可以用傳遞閉包去做。看一道題吧,poj1094,不等式的傳遞性。這道題在處理方面,d i,j 為1時表示i1 矛盾與不確定,優先矛盾。2 若加入了幾個,發...
floyd求傳遞閉包
n頭牛比賽,m種比賽結果,最後問你一共有多少頭牛的排名被確定了,其中如果a戰勝b,b戰勝c,則也可以說a戰勝c,即可以傳遞勝負。求能確定排名的牛的數目。思路 如果一頭牛被x頭牛打敗,打敗y頭牛,且x y n 1,則我們容易知道這頭牛的排名就被確定了,所以我們只要將任何兩頭牛的勝負關係確定了,在遍歷所...
floyd 排序(傳遞閉包)
給定 n 個變數和 m 個不等式。其中 n 小於等於26,變數分別用前 n 的大寫英文本母表示。不等式之間具有傳遞性,即若 a b 且 b c 則 a c。請從前往後遍歷每對關係,每次遍歷時判斷 如果能夠確定全部關係且無矛盾,則結束迴圈,輸出確定的次序 如果發生矛盾,則結束迴圈,輸出有矛盾 如果迴圈...