田忌又要和齊王賽馬了,這一次賽的不止三匹馬,田忌請學oi的你幫忙
田忌和齊王各有n匹馬(1<=n<=1000),他們的編號分別是1-n,給出田忌每條馬能勝過齊王的哪些馬(非贏則輸,不存在平局的情況),每匹馬最多出戰一次,可以自由安排交戰順序,問田忌最多可以贏多少局。
輸入格式:
一行乙個數n, 表示齊王和田忌各自馬的數量 下面n行 第i行第乙個數c,表示田忌的第i匹馬能贏得馬的數量,這一行後面有c個數,表示第i匹馬能贏得對方的馬的編號
輸出格式:
乙個數ans,表示田忌的最大勝場數
輸入樣例1:
432輸出樣例1:1312
2211
3
3輸入樣例2:
816輸出樣例2:4514
2431
6515
1224
5631
4276
4376
2
7對於20%的資料 n<=20 對於50%的資料 n<=200 對於100%的資料 n<=2000 c<=n
思路:本題是二分圖最大匹配:
1、匈牙利演算法(只能拿90分, 被乙個無良的出題人卡掉乙個點):
核心思想:尋找增廣路徑,用增廣路徑求二分圖最大匹配。
#include#include2、網路流:#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;
}
其實所有的二分圖最大匹配問題都可以用網路流來做,並且比匈牙利演算法更優。若對網路流有疑問可以看一下演算法篇裡的網路流。
如樣例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 為了鑑定乙個魔法物品,你需要購買乙個鑑定卷軸。鑑定完一件魔法物品以後,鑑定卷...