hdu2444 判断二分图+最大匹配
来源:互联网 发布:郭靖黄蓉爱情知乎 编辑:程序博客网 时间:2024/05/22 00:45
用黑白染色判断二分图。
#include <cstdio>#include <cstring>#include <queue>using namespace std;struct node{ int u,v;};node edge[50000];int first[300],next[50000];int cc;int vis[300];int flag[300];int linker[300];inline void add_edge(int u,int v){ edge[cc].u=u; edge[cc].v=v; next[cc]=first[u]; first[u]=cc; cc++;}int judge(int n){ queue<int> q; int i; for(i=1;i<=n;i++) //有报告没有这句,我觉得是错的,因为如果图不连通的话 ,会有错误答案 { if(vis[i]==-1) { q.push(i); vis[i]=1; while(!q.empty()) { int u=q.front(); q.pop(); int j; for(j=first[u];j!=-1;j=next[j]) { int v=edge[j].v; if(vis[v]==-1) { vis[v]=!vis[u]; q.push(v); } else if(vis[v]==vis[u]) return 0; } } } } return 1;}bool dfs(int u){ int i; for(i=first[u];i!=-1;i=next[i]) { int v=edge[i].v; if(!flag[v]) { flag[v]=1; if(linker[v]==-1||dfs(linker[v])) { linker[v]=u; return true; } } } return false;}int match(int n){ int i; int sum=0; memset(linker,-1,sizeof(linker)); for(i=1;i<=n;i++) { if(vis[i]==1) { memset(flag,0,sizeof(flag)); if(dfs(i)) sum++; } } return sum;}int main(){ int n,m; while(scanf("%d%d",&n,&m)!=EOF) { int i; memset(vis,-1,sizeof(vis)); memset(first,-1,sizeof(first)); memset(next,-1,sizeof(next)); cc=0; for(i=0;i<m;i++) { int u,v; scanf("%d%d",&u,&v); add_edge(u,v); add_edge(v,u); } int ans=judge(n); if(ans==0) printf("No\n"); else { int res=match(n); printf("%d\n",res); } } return 0;}
- hdu2444二分图判断+最大匹配
- hdu2444 判断二分图+最大匹配
- 【hdu2444】判断二分图+求最大匹配
- hdu2444(二分图判断+二分图最大匹配)
- hdu2444二分图最大匹配
- hdu2444 The Accomodation of Students (二分图判断+最大匹配)
- hdu2444 The Accomodation of Students【二分图判断+最大匹配】
- hdu2444二分图判定 + 最大匹配
- HDU2444 【二分图判定+最大匹配】
- hdu2444 The Accomodation of Students(判断二分匹配+最大匹配)
- HDU2444 The Accomodation of Students(染色法判断二分图+最大匹配)
- hdu2444 The Accomodation of Students--二分图判断 & 最大匹配数
- HDU2444 The Accomodation of Students(判断二分图+最大匹配)
- hdu2444 二分图匹配(判断二分图)
- hdu2444 The Accomodation of Students(判断二部图+最大匹配)
- hdu2444 二分图判定+匹配
- HDU2444 二分图判断(BFS 的染色法) + 求最大匹配边数(DFS 的匈牙利算法)
- hdu2444(判断二分图)
- Trie树的双数组实现
- v6eval编译问题
- hdu1596 find the safest road
- String和StringBuffer的区别
- UVa 11524 - In-Circle
- hdu2444 判断二分图+最大匹配
- 认清营销、销售和广告的庐山真面目
- css和js的浏览器不兼容问题汇总
- I2C总线原理及应用实例
- WPS设置首字母自动大写转换
- c语言要点摘录(21~24 数组与指针-上)
- 64位时间戳实现
- 游戏数据的捕捉(郁金香学习笔记)
- 删除可执行文件的图标