題意:
世界末日即將到來,地球上有n個人想轉移到m個外星球,但是不同的人適應於不同的星球(1個人可適應多個星球),每個外星球都有人數的限制,現在給你星球人數的上限。還有每個人不同的適應情況。問,能否安排所有的人都成功地轉移到外星球上。
思路:多重匹配。。。
1 #include2 #include3 #include4using
namespace
std;
5#define maxn 100000+10
6#define maxm 1278
bool
map[maxn][maxm];
9int cap[maxm];//
i最多能匹配的上限
10int link[maxm];//
i當前的匹配數
11int vlink[maxm][maxn];//
與i匹配的第j個匹配的數k;
12bool mark[maxm];//
標記的是已匹配的planet;
13int
n,m;
1415
bool dfs(int
k)24
//如果沒有滿足匹配要求的,重新匹配
25for(int j=0;j)30}
31}32}
33return
false;34
}353637
intmain()43}
44for(int i=1;i<=m;i++)scanf("
%d",&cap[i]);
45 memset(link,0,sizeof
(link));
46 memset(vlink,0,sizeof
(vlink));
47bool flag=true;48
for(int i=1;i<=n;i++)51}
52 flag?puts("
yes"):puts("no"
);53}54
return0;
55 }
hdu 3605 狀態合併最大流
題意 n個人去m個星球,給出n個人可以去哪些星球的01矩陣。求是否能滿足所有人都去。n到10萬,m 10 一看,起先一瞬間就建圖,準備秒了,人向星球連邊,直接最大流判斷是否為n,提交超時。是啊,10w 10 100w條邊,鐵定超時。include include include include in...
hdu 1669 二分 多重匹配)
思路 由於要求minimize the size of the largest group,由此我們想到二分列舉,然後每一次求一下多重匹配就可以了。1 include2 include3 include4 include5 include6 using namespace std 7 define ...
HDU 3605 Escape 最大流,狀壓
最大流,n比較大,但是m只有10,所以對應的人的狀態最多有2 m種,因此可以對人進行歸類,那樣n的資料量就只有1024了,求最大流 g 交會超時 要用c include include include include include define maxn 1100 define maxe 2100...