二分图匹配
来源:互联网 发布:sound track软件 编辑:程序博客网 时间:2024/06/05 18:13
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
const int MAXN=100;
int uN,vN;//u,v数目
int g[MAXN][MAXN];
int linker[MAXN];
bool used[MAXN];
bool dfs(int u)//从左边开始找增广路径
{
int v;
for(v=0;v<vN;v++)//这个顶点编号从0开始,若要从1开始需要修改
if(g[u][v]&&!used[v])
{
used[v]=true;
if(linker[v]==-1||dfs(linker[v]))
{//找增广路,反向
linker[v]=u;
return true;
}
}
return false;//这个不要忘了,经常忘记这句
}
int hungary()
{
int res=0;
int u;
memset(linker,-1,sizeof(linker));
for(u=0;u<uN;u++)
{
memset(used,0,sizeof(used));
if(dfs(u)) res++;
}
return res;
}
int main()
{
memset(g,0,sizeof(g));
uN=2;
vN=8;
int b[2];
b[0]=12;
b[1]=13;
for(int i=0; i<m; i++)
{
int row,col;
row = b[i] / (p+1);
col = b[i] / (p+1);
if(col == p)
g[i][(row + col)%p + p-1] = 1;
else if((row + col)%p == p-1)
g[i][row] = 1;
else
{
g[i][row] = 1;
g[i][(row + col)%p + p-1] = 1;
}
}
//g[0][0]=1;
g[0][2]=1;
g[0][6]=1;
g[1][2]=1;
g[1][7]=1;
for(int i = 0;i<uN;i++)
for(int j = 0; j<vN;j++)
{
cout<<g[i][j]<<" ";
if(j==vN-1) cout<<endl;
}
cout<<hungary()<<endl;
return 0;
}
- 二分图图匹配
- 二分图匹配
- 二分图匹配
- 二分图匹配
- 二分图匹配
- 正则二分图匹配
- 二分图匹配
- 二分图匹配总结
- 二分图最大匹配
- 二分图最大匹配 。
- hdu2119二分图匹配
- 二分图匹配
- 二分图匹配
- 二分图匹配算法
- poj3020-二分图匹配
- 二分图匹配
- 二分图最大匹配
- 二分图最大匹配
- 虚函数C++中的虚函数的作用主要是实现了多态的机制
- Unity3d优化之路
- Spring几个问题解决办法
- 手游开发你应该了解的游戏引擎——cocos2d-x
- python http服务器线程封装例子
- 二分图匹配
- 【OpenCV学习笔记】【教程翻译】四(车牌检测之SVM分类)
- Js面向对象编程
- 迭代器分类
- 第四章 KMP模式匹配算法
- MessageFormat用法
- 用终端下载git上的代码
- .inc文件
- 好的网站链接或文章链接(三)