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 |
为什么俺的最小费用最大流会TLE啊?#include<stdio.h> #include<string.h> #include<math.h> #define maxint 0x7fffffff #define maxn 52 #define size 2*maxn int need[maxn][maxn]; int provide[maxn][maxn]; int cost[maxn][maxn][maxn]; int cap[size][size]; int flow[size][size]; int pre[size]; int w[size][size]; int d[size]; int n,m,k; int S,T; int min; int max_flow; int N; int Bellman_ford() { int i,j,k; memset(pre,0,sizeof(pre)); for(i=1;i<=N;i++) d[i]=maxint; d[0]=0; for(k=1;k<=N;k++) for(i=0;i<=N;i++) for(j=0;j<=N;j++) if(cap[i][j]-flow[i][j]>0) if(d[i]<maxint && d[j]>d[i]+w[i][j]){ d[j]=d[i]+w[i][j]; pre[j]=i; } if(pre[T]!=0) return 1; else return 0; } int Edmonds_Karp() { int cp,v; int ans=0; max_flow=0; while(Bellman_ford()) { cp=maxint; for(v=T;v!=S;v=pre[v]) if(cp>cap[pre[v]][v]-flow[pre[v]][v]) cp=cap[pre[v]][v]-flow[pre[v]][v]; for(v=T;v!=S;v=pre[v]) { flow[pre[v]][v]+=cp; flow[v][pre[v]]=-flow[pre[v]][v]; ans+=cp*w[pre[v]][v]; } max_flow+=cp; } return ans; } int main() { //freopen("f.in","r",stdin); int i,j,t,sum; for(;;) { scanf("%d%d%d",&n,&m,&k); if(n==0 && m==0 && k==0) break; for(i=1;i<=n;i++) for(j=1;j<=k;j++) scanf("%d",&need[i][j]); for(i=1;i<=m;i++) for(j=1;j<=k;j++) scanf("%d",&provide[i][j]); for(t=1;t<=k;t++) for(i=1;i<=n;i++) for(j=1;j<=m;j++) scanf("%d",&cost[t][i][j]); min=0; for(t=1;t<=k;t++) { memset(flow,0,sizeof(flow)); memset(cap,0,sizeof(cap)); memset(w,0,sizeof(w)); S=0,T=m+n+1,N=m+n+1; for(i=1;i<=m;i++) cap[S][i]=provide[i][t]; for(i=1;i<=m;i++) for(j=m+1;j<=m+n;j++) cap[i][j]=maxint; for(i=m+1;i<=m+n;i++) cap[i][T]=need[i-m][t]; for(i=1;i<=m;i++) for(j=m+1;j<=m+n;j++) w[i][j]=cost[t][j-m][i]; min+=Edmonds_Karp(); for(i=1,sum=0;i<=n;i++) sum+=need[i][t]; if(max_flow!=sum) break; } if(t>k) printf("%d\n",min); else printf("-1\n"); } return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator