#include<stdio.h>
#include<stdlib.h>
int a[101][101],d[101],m,n,p[101];
int dfs(int x){
int i,j,k;
for(i=1;i<=n;i++)
if(a[x][i] && !p[i]){
p[i]=1;
if(!d[i] || dfs(d[i])){
d[i]=x;
printf("[%d %d]----",x,i);
system("pause");
return 1;
}
}
return 0;
}
int main(){
int i,j,k;
scanf("%d%d",&n,&m);
int x,y;
for(i=1;i<=m;i++){
scanf("%d%d",&x,&y);
a[x][y]=1;
}
for(i=1;i<=n;i++){
for(j=1;j<=n;j++)p[j]=0;
dfs(i);
}
for(i=1;i<=n;i++)printf("%d %d\n",d[i],i);
system("pause");
return 0;
}
匈牙利参考程序
最新推荐文章于 2023-04-03 23:12:00 发布