bzoj1191 [HNOI2006]超级英雄Hero
2017-08-29 07:43
316 查看
题目
显然,一个题目对应多个锦囊,显然是最大匹配,匈牙利算法上。
值得注意的是,从1~n,只要有一个找不到匹配,就直接退出,注意读题233。
cef5
显然,一个题目对应多个锦囊,显然是最大匹配,匈牙利算法上。
值得注意的是,从1~n,只要有一个找不到匹配,就直接退出,注意读题233。
//匈牙利算法最大匹配 #include<bits/stdc++.h> #define N 10010 using namespace std; int n,m,ans; bool used[N+1]; int G[N+1][2],lk[N+1]; inline char nc() { static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++; } inline int read() { int x=0,b=1; char c=nc(); for(;!(c<='9'&&c>='0');c=nc())if(c=='-')b=-1; for(;c<='9'&&c>='0';c=nc())x=x*10+c-'0'; return x*b; } inline bool find(int x) { for(int i=0;i<=1;i++) { int u=G[x][i]; if(used[u])continue; used[u]=true; if(!lk[u]||find(lk[u])) { lk[u]=x; return true; } } return false; } int main() { //freopen("in.txt","r",stdin); n=read(),m=read(); for(int i=1;i<=m;i++)G[i][0]=read(),G[i][1]=read(); for(int i=1;i<=m;i++) { memset(used,false,sizeof(used)); if(find(i))ans++; else break; } cout<<ans; return 0; }
cef5
相关文章推荐
- bzoj1191: [HNOI2006]超级英雄Hero
- bzoj 1191: [HNOI2006]超级英雄Hero
- 【BZOJ1191】[HNOI2006]超级英雄Hero【二分图匹配】
- bzoj1191 [HNOI2006]超级英雄Hero
- 【bzoj1191】 HNOI2006—超级英雄Hero
- 【BZOJ】1191: [HNOI2006]超级英雄Hero(二分图匹配)
- BZOJ 1191: [HNOI2006]超级英雄Hero【二分图匹配】
- BZOJ 1191: [HNOI2006]超级英雄Hero(二分图匹配)
- BZOJ 1191 HNOI 2006 超级英雄Hero 二分图最大匹配
- BZOJ大视野 1191: [HNOI2006]超级英雄Hero
- bzoj[1191]: [HNOI2006]超级英雄Hero
- bzoj 1191: [HNOI2006]超级英雄Hero
- BZOJ 1191: [HNOI2006]超级英雄Hero 匈牙利算法
- [BZOJ1191][HNOI2006]超级英雄Hero(二分图匹配)
- bzoj1191: [HNOI2006]超级英雄Hero(二分图匹配)
- [bzoj1191][HNOI2006]超级英雄Hero
- 【二分图】【最大匹配】【匈牙利算法】bzoj1191 [HNOI2006]超级英雄Hero
- bzoj1191 [HNOI2006]超级英雄Hero(二分图最大匹配)
- 【BZOJ 1191】[HNOI2006]超级英雄Hero
- BZOJ 1191 [HNOI2006]超级英雄Hero 二分图最大匹配