poj1325最小点覆盖
来源:互联网 发布:处理图片的软件 编辑:程序博客网 时间:2024/05/13 23:40
以任务作为边,机器的模式为点。如果一任务可以由A机器的模式i或B机器的模式j加工,那么ij连边,边代表该任务。于是问题变成了求以最少的点来覆盖所有边的问题,即最小点覆盖,即可在转变成由求最大匹配得到。运用著名的匈牙利算法即可快速的求解该问题。需要注意的是由于机器开始都处于0模式,所以如果有任务可以有任一种机器的0模式加工的话可先直接加工该任务而不要重启机器,即不要连边。
#include<iostream>
using namespace std;
int n,m,k;
int Map[110][110];
int match;
int use[110];
int mat[110];
bool crosspath(int k)
{ int i,j;
for(i=1;i<=Map[k][0];i++)
{
j=Map[k][i];
if(!use[j])
{
use[j]=1;
if(mat[j]==-1||crosspath(mat[j]))
{
mat[j]=k;
return true;
}
}
}
return false;
}
void hungary()
{ int i;
for(i=0;i<n;i++)
{
if(crosspath(i))
match++;
memset(use,0,sizeof(use));
}
}
int main()
{
int i,j,x,y;
while(scanf("%d",&n)&&n)
{
scanf("%d%d",&m,&k);
memset(mat,-1,sizeof(mat));
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
Map[i][j]=0;
}
for(j=1;j<=k;j++)
{
scanf("%d%d%d",&i,&x,&y);
if(x*y==0)
continue;
Map[x][++Map[x][0]]=y;
}
hungary();
printf("%d\n",match);
match=0;
}
return 0;}
- poj1325最小点覆盖
- poj1325 二分图的最小点覆盖
- poj1325 Machine Schedule 最小点覆盖
- poj1325(最小顶点覆盖)
- poj1325最小顶点覆盖
- poj1325 Machine Schedule (最小点覆盖 二分图匹配)
- POJ1325 Machine Schedule【二分图最小点覆盖】
- poj1325 最小顶点覆盖 konig定理
- poj1325 二分图的最小覆盖
- poj1325 Machine Schedule【最小顶点覆盖】
- poj1325——Machine Schedule//最小顶点覆盖
- POJ1325 Machine Schedule 【二分图最小顶点覆盖】
- POJ1325二分匹配或者DINIC(最小路径覆盖)
- POJ1325.Machine Schedule机器调度——最小顶点覆盖
- poj1325——Machine Schedule(最小顶点覆盖)
- 最小点覆盖
- poj_1325_最小点覆盖
- 最小点覆盖
- ORACLE 各个名字解读
- c++ opp 面向对象思想,受教甚多
- poj 3505(Tower Parking)
- Oracle 索引的维护
- 加快建 index 索引 的时间
- poj1325最小点覆盖
- 虚机下的Linux分辨率调整
- WPF属性绑定测试(索引器方式)
- fedora 升级后删除多余内核
- JDom 读写XML
- UBuntu 编译安装Nginx服务
- ZC公司员工评分系统——前台排版算法
- POJ3278
- Oracle内存详解之一 整体架构