T79167 新田忌賽馬

2022-02-19 08:20:55 字數 2259 閱讀 7559

田忌又要和齊王賽馬了,這一次賽的不止三匹馬,田忌請學oi的你幫忙

田忌和齊王各有n匹馬(1<=n<=1000),他們的編號分別是1-n,給出田忌每條馬能勝過齊王的哪些馬(非贏則輸,不存在平局的情況),每匹馬最多出戰一次,可以自由安排交戰順序,問田忌最多可以贏多少局。

輸入格式:

一行乙個數n, 表示齊王和田忌各自馬的數量 下面n行 第i行第乙個數c,表示田忌的第i匹馬能贏得馬的數量,這一行後面有c個數,表示第i匹馬能贏得對方的馬的編號

輸出格式:

乙個數ans,表示田忌的最大勝場數

輸入樣例1:

432

1312

2211

3

輸出樣例1:

3
輸入樣例2:

816

4514

2431

6515

1224

5631

4276

4376

2

輸出樣例2:

7
對於20%的資料 n<=20 對於50%的資料 n<=200 對於100%的資料 n<=2000 c<=n

思路:本題是二分圖最大匹配:

1、匈牙利演算法(只能拿90分, 被乙個無良的出題人卡掉乙個點):

核心思想:尋找增廣路徑,用增廣路徑求二分圖最大匹配。

#include#include

#include

#include

#include

using

namespace

std;

intn,a,b;

int line[2008][2008],use[2008],horse[10008

];int ans=0

;long

long

read()

while(ch>='

0'&&ch<='9')

return x*f;

}int find(int x)//

尋找增廣路徑 }}

return0;

}int

main()

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

printf("%d

",ans);

return0;

}

2、網路流:

其實所有的二分圖最大匹配問題都可以用網路流來做,並且比匈牙利演算法更優。若對網路流有疑問可以看一下演算法篇裡的網路流。

如樣例1的資料,圖應該是這樣的。其中,s\t分別為超級源點\匯點。

T139631 T3 階乘之和

給定乙個非負整數 n,請你判斷 n 是否可以由一些非負整數的階乘相加得到。有若干組資料。每行乙個整數 n,保證 n 1000000。以負數結束輸入。對於每組資料輸出一行,若可以則輸出 yes 否則輸出 no 輸入 1複製 9 1 輸出 1複製 yes7 20 校內測模擬t3 差點就離 l 開 k i...

使用t2t來編寫文件

txt2tags 示例 zh sample zh.html 看這個就能很快熟悉相關語法了 教程 zh manpage zh.html txt2tags學習 bluefrog bluefrog.wu gmail.com date m d y encoding utf 8 target html 一級標...

t073 t015 魔法物品

time limit 1 second memory limit 128 mb 有兩種型別的物品 普通物品和魔法物品。每種普通物品有乙個價值p,但每種魔法物品有兩種價值 鑑定前的價值p1和鑑定後的 價值p2 保證p2 p1 為了鑑定乙個魔法物品,你需要購買乙個鑑定卷軸。鑑定完一件魔法物品以後,鑑定卷...