社区讨论
匈牙利算法18PTS求条
P2756飞行员配对方案问题参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miu3n00z
- 此快照首次捕获于
- 2025/12/06 17:36 2 个月前
- 此快照最后确认于
- 2025/12/08 20:30 2 个月前
RT
CPP#include<bits/stdc++.h>
using namespace std;
const int N=105;
int e[N],h[N],ne[N],idx;
int mt[N];
bool st[N];
void add(int u,int v)
{
e[idx]=v;
ne[idx]=h[u];
h[u]=idx++;
}
bool fnd(int u)
{
for(int i=h[u];i!=-1;i=ne[i])
{
int j=e[i];
if(!st[j])
{
st[j]=1;
if(fnd(mt[j])||!mt[j])
{
mt[j]=u;
return true;
}
}
}
return false;
}
int main()
{
int m,n;
cin>>m>>n;
int u,v;
memset(h,-1,sizeof h);
while(1)
{
cin>>u>>v;
if(u==-1&&v==-1)
break;
add(u,v);
}
int ans=0;
for(int i=1;i<=m;i++)
{
memset(st,false,sizeof st);
if(fnd(i)) ans++;
}
cout<<ans<<endl;
for(int i=m+1;i<=n;i++)
{
cout<<mt[i]<<" "<<i<<endl;
}
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...