bzoj_1433_[zjoi2009]假期的宿舍_二分圖匹配
題意:學校放假了······有些同學回家了,而有些同學則有以前的好朋友來探訪,那麼住宿就是乙個問題。比如a和b都是學校的學生,a要回家,而c來看b,c與a不認識。我們假設每個人只能睡和自己直接認識的人的床。那麼乙個解決方案就是b睡a的床而c睡b的床。而實際情況可能非常複雜,有的人可能認識好多在校學生,在校學生之間也不一定都互相認識。我們已知一共有n個人,並且知道其中每個人是不是本校學生,也知道每個本校學生是否回家。問是否存在乙個方案使得所有不回家的本校學生和來看他們的其他人都有地方住。
分析:把人和床當成點,每個人向認識的人的床連邊,求二分圖最大匹配。
**:
#include #include #include using namespace std;#define n 200
int head[n],to[n*n<<1],nxt[n*n<<1],match[n],vis[n];
int t,n,is[n],in[n],cnt;
inline void add(int u,int v)
bool dfs(int x)}}
return 0;
}int main()
for(int i=1;i<=n;i++)
int x;
for(int i=1;i<=n;i++)
}for(int i=1;i<=n;i++)
}puts(sum?"t_t":"^_^");
}}
bzoj 1433 ZJOI2009 假期的宿舍
description input output sample input 1 3 1 1 0 0 1 0 0 1 1 1 0 0 1 0 0 sample output hint 對於30 的資料滿足1 n 12。對於100 的資料滿足1 n 50,1 t 20。把人視為左邊的集合,把床視為右邊的...
bzoj1433 ZJOI2009 假期的宿舍
題目鏈結 乙個暑假,有人去大學裡面探望朋友,有些人回家了,有些人留下了,每個人都要在學校裡面過夜。乙個人只能睡他認識的人的床。問能否安排出方案使所有人有床睡。直接按照題意連邊然後二分圖匹配即可。多組注意清空陣列,以及自己睡自己床的情況。bzoj1433 include include include...
1433 ZJOI2009 假期的宿舍
題解 水題,然而wa了n次因為忘記自己可以睡自己的床。不過還是在30min內a了,把每個點拆成兩個,st連向所有需要床位的人,所有床位連向ed,如果ij認識就連一條邊。include include include include include include define inf 1e9 usi...