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 飞行员配对方案问题的主要内容,如果未能解决你的问题,请参考以下文章