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 |
Re:为什么不是0MS?In Reply To:为什么不是0MS? Posted by:cgp2001 at 2007-12-16 10:21:54 > 哪位大牛帮我看下,如何优化到0MS? > #define INF (1<<29) > #include "stdio.h" > int F[2][31][31][31]; > int path[31][31]; > int M,N; > int main(int argc, char* argv[]) > { > int i,j,k,l; > scanf("%d",&M); > while (M--) > { > scanf("%d",&N); > for(i=1;i<=N;++i) > for(j=i+1;j<=N;++j) > { > scanf("%d",&path[i][j]); > path[j][i]=path[i][j]; > } > for(i=0;i<=1;++i) > for(j=1;j<=N;++j) > for(k=1;k<=N;++k) > for(l=1;l<=N;++l) > F[i][j][k][l]=INF; > F[1][1][1][1]=0; > for(i=2;i<=N;++i) > { > for(j=1;j<i;++j) > for(k=1;k<i;++k) > for(l=1;l<i;++l) > if(F[(i-1)%2][j][k][l] != INF) > { > if(F[i%2][i][k][l]>F[(i-1)%2][j][k][l]+path[j][i]) > F[i%2][i][k][l]=F[(i-1)%2][j][k][l]+path[j][i]; > if( F[i%2][j][i][l]>F[(i-1)%2][j][k][l]+path[k][i]) > F[i%2][j][i][l]=F[(i-1)%2][j][k][l]+path[k][i]; > if(F[i%2][j][k][i]>F[(i-1)%2][j][k][l]+path[l][i]) > F[i%2][j][k][i]=F[(i-1)%2][j][k][l]+path[l][i]; > } > for(j=1;j<=N;++j) > for(k=1;k<=N;++k) > for(l=1;l<=N;++l) > F[(i-1)%2][j][k][l]=INF; > } > int minMIN=INF; > for(i=1;i<=N;++i) > for(j=1;j<=N;++j) > for(k=1;k<=N;++k) > if(minMIN>F[N%2][i][j][k]) > minMIN=F[N%2][i][j][k]; > printf("%d\n",minMIN); > } > return 0; > } > Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator