luogu2756 飞行员配对方案问题

Posted caterpillor

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了luogu2756 飞行员配对方案问题相关的知识,希望对你有一定的参考价值。

匈牙利:

4 8
1 5
1 6
2 5
3 5
3 7
4 5
4 7
4 8
-1 -1

 

out:4

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long LL;
int n,m,line[105][105],have[105],vis[105];/////
int work(int u)
{
    for(int v=m+1;v<=n;v++)
    {
        if(line[u][v]==1 && !vis[v])//2-5要成立,1就不能访问5 ,否则5->1,1->5死循环了 
        {
            vis[v]=1;
            if(!have[v] || work(have[v])==1)
            {
                have[v]=u;
                return 1;
            }
        }
    }
    return 0;
}
int x,y,cnt;
int main()
{
    scanf("%d%d",&m,&n);
    scanf("%d%d",&x,&y);//x是外籍飞行员1~m, y是皇家飞行员m+1~n
    while(x!=-1 && y!=-1 )
    {
        line[x][y]=1;
        scanf("%d%d",&x,&y);    
    }    
    memset(have,0,sizeof have); 
    for(int i=1;i<=m;i++)
    {
        memset(vis,0,sizeof vis);
        if(work(i)==1) cnt++;
    }
    printf("%d
",cnt);
    if(cnt==0) {cout<<"No Solution!"<<endl;return 0;} 
    for(int i=m+1;i<=n;i++)
    {
        if(have[i]>0)
            printf("%d %d
",have[i],i);
    }
    return 0;
}

 










以上是关于luogu2756 飞行员配对方案问题的主要内容,如果未能解决你的问题,请参考以下文章

P2756 飞行员配对方案问题(二分图)

网络流24题Luogu P2756飞行员配对方案问题

Luogu P2756 飞行员配对方案问题

luogu P2756 飞行员配对方案问题 网络流24

洛谷P2756 飞行员配对方案问题

P2756 飞行员配对方案问题