POJ-1325-Machine Schedule

来源:互联网 发布:mac terminal字体 编辑:程序博客网 时间:2024/04/28 06:16

第一次做二分图匹配的题~这个题也就是说求最小点覆盖,也就是找最大的二分图匹配~

代码:

#include<cstdio>#include<cstring>#include<iostream>#include<vector>using namespace std;const int maxn=1001;vector<int> e[maxn];int n,m,k;int mk[101];bool vis[101];bool DFS(int u){    for(int i=0;i<e[u].size();i++)    {int v=e[u][i];if(!vis[v]){    vis[v]=1;    if(mk[v]==-1||DFS(mk[v]))    {mk[v]=u;return 1;    }}    }    return 0;}int main(){    while(scanf("%d",&n)&&n)    {scanf("%d%d",&m,&k);for(int i=0;i<=n;i++)    e[i].clear();for(int i=0;i<k;i++){    int ita,itb,itc;    scanf("%d%d%d",&ita,&itb,&itc);    if(itb*itc==0)continue;    e[itb].push_back(itc);}memset(mk,-1,sizeof(mk));int ans=0;for(int i=1;i<=n;i++){    memset(vis,0,sizeof(vis));    if(DFS(i))ans++;}printf("%d\n",ans);    }    return 0;}


原创粉丝点击