您的位置:首页 > 其它

POJ 1325二分图,最小点覆盖

2010-12-05 17:08 423 查看
//二分图,最小点覆盖,注意:At the beginning they are both work at mode_0.

#include<iostream>

using namespace std;

int map[102][102];

bool visity[102];

int visitx[102];

int matchingy[102];

int n,m,k;

bool dfs(int u)

{

int v;

for(v=1;v<m;v++)

{

if(visity[v]==false&&map[u][v]==1)

{

visity[v]=true;

if(matchingy[v]==-1||dfs(matchingy[v])==true)

{

matchingy[v]=u;

return true;

}

}

}

return false;

}

int main()

{

int num;

int i;

int from,to;

int result;

while(scanf("%d",&n))

{

if(n==0)

break;

scanf("%d %d",&m,&k);

memset(map,0,sizeof(map));

for(i=0;i<k;i++)

{

scanf("%d %d %d",&num,&from,&to);

map[from][to]=1;

}

result=0;

memset(matchingy,255,sizeof(matchingy));

for(i=1;i<n;i++)

{

memset(visity,false,sizeof(visity));

if(dfs(i))

{

result++;

}

}

printf("%d/n",result);

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: