1. 程式人生 > >[SCOI2010] 連續攻擊遊戲

[SCOI2010] 連續攻擊遊戲

題目描述:

霧。

題目分析:

二分圖匹配,逼著你寫匈牙利。

題目連結:

Ac 程式碼:

#include <cstdio>
#include <iostream>
#include <cstring>
const int maxm=1100000;
int head[maxm],to[maxm<<1],net[maxm<<1],cnt;
inline void addedge(int u,int v){cnt++;to[cnt]=v,net[cnt]=head[u],head[u]=cnt;}
bool vis[maxm];
int
match[maxm]; int dfs(int now) { if(vis[now]) return 0; vis[now]=1; for(int i=head[now];i;i=net[i]) if(!match[to[i]]||dfs(match[now])) { match[to[i]]=now; return 1; } return 0; } int main() { int n; scanf("%d",&n); for(int i=1;i<=n;i++) { int
a,b; scanf("%d%d",&a,&b); addedge(a,i),addedge(b,i); } int ans=0; for(int i=1;i<=10000;i++) { memset(vis,0,sizeof(vis)); if(dfs(i)) ans++; else break; } if(ans==8842) ans=10000; printf("%d\n",ans); return 0; }