POJ1325 Machine Schedule 二分图最大匹配
2011-08-27 21:53
393 查看
基础题。
注意点在于当模式等于0时的处理。
#include<iostream>
using namespace std;
int n,m,k;
const int N=105,M=1005;
bool mat
;
bool visit
;
int link
;
bool dfs(int u)
{
for(int i=0;i<m;i++)
if(!visit[i]&&mat[u][i])
{
visit[i]=true;
if(link[i]==-1||dfs(link[i]))
{
link[i]=u;
return true;
}
}
return false;
}
int main()
{
while(scanf("%d%d%d",&n,&m,&k),n!=0)
{
memset(mat,0,sizeof(mat));
int tmp,a,b;
for(int i=1;i<=k;i++)
{
scanf("%d%d%d",&tmp,&a,&b);
if(a*b!=0)//这句不加则wa
mat[a][b]=true;
}
int ans=0;
memset(link,-1,sizeof(link));
for(int i=0;i<n;i++)
{
memset(visit,0,sizeof(visit));
if(dfs(i))
ans++;
}
printf("%d\n",ans);
}
}
注意点在于当模式等于0时的处理。
#include<iostream>
using namespace std;
int n,m,k;
const int N=105,M=1005;
bool mat
;
bool visit
;
int link
;
bool dfs(int u)
{
for(int i=0;i<m;i++)
if(!visit[i]&&mat[u][i])
{
visit[i]=true;
if(link[i]==-1||dfs(link[i]))
{
link[i]=u;
return true;
}
}
return false;
}
int main()
{
while(scanf("%d%d%d",&n,&m,&k),n!=0)
{
memset(mat,0,sizeof(mat));
int tmp,a,b;
for(int i=1;i<=k;i++)
{
scanf("%d%d%d",&tmp,&a,&b);
if(a*b!=0)//这句不加则wa
mat[a][b]=true;
}
int ans=0;
memset(link,-1,sizeof(link));
for(int i=0;i<n;i++)
{
memset(visit,0,sizeof(visit));
if(dfs(i))
ans++;
}
printf("%d\n",ans);
}
}
相关文章推荐
- POJ 1325 Machine Schedule (最小点覆盖 && 二分图最大匹配)
- poj 1325(二分图最大匹配)
- poj - 1325 - Machine Schedule(二分图最大匹配)
- 【二分图|最大匹配】POJ-1325 Machine Schedule
- POJ 1325 Machine schedine (二分图-最小点覆盖数=最大匹配边数)
- poj1325 二分图最大匹配
- POJ 1325-Machine Schedule(二分图_最大匹配最小点覆盖)
- POJ1325 Machine Schedule 二分图最大匹配
- POJ 1325 Machine Schedule 二分图最大匹配
- 求解二分图的最大匹配的匈牙利算法---POJ 1325 Machine Schedule
- poj 1325 Machine Schedule 二分图最小点覆盖=最大匹配
- POJ 2239 —— 二分图最大匹配
- POJ 2239 二分图最大匹配模版
- POJ 1463 Strategic game(二分图最大匹配)
- Asteroids(POJ--3041 【二分图的最小顶点集 = 二分图的最大匹配】
- POJ 1274--The Perfect Stall【二分图 && 最大匹配数 && 水题】
- 【二分图+最大匹配】北大 poj 2446 Chessboard
- POJ 2112 Optimal Milking 二分图最大匹配+二分答案
- POJ 2536 Gopher II(二分图最大匹配)
- POJ 1469 COURSES(二分图最大匹配) (矩阵和邻接表的模板题)