POJ3660 奶牛競賽(閉包)

2021-08-16 06:51:06 字數 488 閱讀 9056

每日打卡(1/1)(補)

題目大意:

共有n頭奶牛,奶牛兩兩間比賽,問經過m輪比賽後,有多少奶牛可以確定名次。

思路:假設乙個奶牛比x頭奶牛厲害,比y頭奶牛弱,那麼如果x+y=n-1,則能確定它的名次。因此,我們用floyd來傳遞閉包。

#include#include#include#include#includeusing namespace std;

const int maxn = 205;

int n,m,map[maxn][maxn];

int ans = 0;

void floyd() }

int main()

floyd();

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

if(tot==n-1)

ans++;

} cout

}

POJ 3660 傳遞閉包

題意 給出n頭牛,m條關係,下面m行 a 打敗 b 體會 一開始以為是拓撲排序,看了其他部落格才知道是最短路的應用,一句話讓我明白了這道題該怎麼做 一頭牛如果輸的場數和贏得場數等於n 1 那麼他的排名就是確定的。只需要求這頭牛與其他牛的輸贏關係就好了,三層迴圈確定關係。看 傳遞閉包 include ...

POJ3660傳遞閉包

貌似以後數學裡會學到,不過還是先水一篇部落格吧 傳遞閉包一般用來解決一類具有傳遞性的問題。定義 在交際網路中,給定若干個元素和若干對二元關係,且這些關係具有傳遞性,通過這些傳遞性推導出盡量多的元素之間的關係的問題叫做傳遞閉包。也就是用已知條件來推出其他所有的可知條件。數獨應該就是使用了傳遞閉包的乙個...

POJ 3660 詳細題解分析,Floyd

題目鏈結 利用floyd求出可以連通的cow 就是可以確定大小關係 最後遍歷一遍,找與該牛可以確定大小關係的個數,為n 1即可確定rank。ac include include include include include include include using namespace std t...