Hungary
1 bool findm(int x) 2 { 3 int i,j; 4 for(int j=1;j<=m;j++) 5 { 6 if(line[x][j]==true && used[j]==false) //可以连通且这次找这位时没试图改变过归属 7 { 8 used[j]=1; 9 if(a[j]==0 || findm(a[j])) 10 { 11 a[j]=x; 12 return true; 13 } 14 } 15 } 16 return false; 17 }
1 for(int i=1;i<=n;i++) //主程序 2 { 3 mem(used); 4 if(findm(i)) all++; 5 }