Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
这个程序怎么会陷入死循环?#include <iostream.h> #include <math.h> #include <stdio.h> #include <string.h> #define MAXN 105 #define INF 32767 int g[MAXN][MAXN],gt[MAXN][MAXN]; int l[2*MAXN]; int s[MAXN],t[MAXN],cx[MAXN],cy[MAXN]; int n,m; int path(int x) { int i,j,ret=0; for(i=1;i<=m;i++){ if (!t[i]&&g[x][i]){ t[i]=1; if (!cy[i]){ g[x][i]=-g[x][i];cy[i]=1; ret=1; return ret; } j=1; while(j<=n&&!s[j]&&g[j][i]>=0) j++; if (j<=n){ s[j]=1; if (path(j)){ g[x][i]=-g[x][i];g[j][i]=-g[j][i]; ret=1; return ret; } } } } return ret; } int kuhn_munkras() { int u,i,j,al,edge; u=1; memset(l,0,sizeof(l)); memset(cx,0,sizeof(cx)); memset(cy,0,sizeof(cy)); for(i=1;i<=n;i++)for(j=1;j<=m;j++){ gt[i][j]=g[i][j]; if (g[i][j]>l[i]) l[i]=g[i][j]; } for(i=1;i<=n;i++)for(j=1;j<=m;j++){ if (l[i]+l[n+j]==gt[i][j])g[i][j]=1; else g[i][j]=0; } while(u<=m){ if (!cx[u]){ memset(s,0,sizeof(s)); memset(t,0,sizeof(t)); s[u]=1; if (!path(u)){ al=INF; for(i=1;i<=n;i++)for(j=1;j<=m;j++){ if (s[i]&&!t[j]&&l[i]+l[n+j]-gt[i][j]<al){ al=l[i]+l[n+j]-gt[i][j]; } } for(i=1;i<=n;i++)if (s[i])l[i]=l[i]-al; for(i=1;i<=m;i++)if (t[i])l[n+i]=l[n+i]+al; edge=0; for(i=1;i<=n;i++)for(j=1;j<=m;j++){ if (l[i]+l[n+j]==gt[i][j]){g[i][j]=1;edge++;} else g[i][j]=0; } memset(cx,0,sizeof(cx)); memset(cy,0,sizeof(cy)); } else cx[u]=1; u=0; } u++; } return 0; } int main() { int r,c,i,j,k1,k2,tot; int M[MAXN][2],H[MAXN][2]; char ch; freopen("e.in","r",stdin); while(cin>>r>>c){ if (!r&&!c) break; k1=1;k2=1; for(i=0;i<r;i++){ for(j=0;j<c;j++){ cin>>ch; if (ch=='m'){M[k1][0]=i;M[k1++][1]=j;} if (ch=='H'){H[k2][0]=i;H[k2++][1]=j;} } } n=k1-1; m=k2-1; for(i=1;i<=n;i++)for(j=1;j<=m;j++){ g[i][j]=abs(M[i][0]-H[j][0])+abs(M[i][1]-H[j][1]); g[i][j]=1000-g[i][j]; } kuhn_munkras(); tot=0; for(i=1;i<=n;i++)for(j=1;j<=m;j++){ if (g[i][j]<0) tot+=gt[i][j]; } cout<<1000*n-tot<<endl; } return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator