題意:給出n頭牛,m條關係,下面m行 a 打敗 b
體會:一開始以為是拓撲排序,看了其他部落格才知道是最短路的應用,一句話讓我明白了這道題該怎麼做:一頭牛如果輸的場數和贏得場數等於n-1 那麼他的排名就是確定的。只需要求這頭牛與其他牛的輸贏關係就好了,三層迴圈確定關係。
看**:
//傳遞閉包
#include#include//當一頭牛的輸贏總場數確定時,確定排名
int main()
for(int k=1; k<=n; k++)
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
int sum=0,ans=0;
for(int i=1; i<=n; i++)
if(ans==n-1)
sum++;
}printf("%d\n",sum);
}return 0;
}
POJ3660傳遞閉包
貌似以後數學裡會學到,不過還是先水一篇部落格吧 傳遞閉包一般用來解決一類具有傳遞性的問題。定義 在交際網路中,給定若干個元素和若干對二元關係,且這些關係具有傳遞性,通過這些傳遞性推導出盡量多的元素之間的關係的問題叫做傳遞閉包。也就是用已知條件來推出其他所有的可知條件。數獨應該就是使用了傳遞閉包的乙個...
POJ3660 奶牛競賽(閉包)
每日打卡 1 1 補 題目大意 共有n頭奶牛,奶牛兩兩間比賽,問經過m輪比賽後,有多少奶牛可以確定名次。思路 假設乙個奶牛比x頭奶牛厲害,比y頭奶牛弱,那麼如果x y n 1,則能確定它的名次。因此,我們用floyd來傳遞閉包。include include include include incl...
poj 3660 floyd判定名次 傳遞閉包
要求 n個牛,每個牛有乙個不同的rank,且1 rank n,m個條件,每個條件有兩個數字,代表兩個牛的序號,表示前乙個牛比後乙個牛的rank大。條件不會自相矛盾。問能確定幾個牛具體的rank值。方法 floyd 1.一頭牛若被lose頭牛打敗,戰勝win頭牛,且lose win n 1,即可確定r...