poj 1122||zoj 1053 FDNY to the Rescue!(最短路)
2012-01-16 00:34
393 查看
poj上过了,但zoj上SF到吐。
求路过的大牛指点一二。
求路过的大牛指点一二。
#include<iostream> #include <cstdio> #include <string.h> #include<stdlib.h> #define inf 1000000 using namespace std; typedef struct fd{ int org,dest,time,path[25]; }fd; int cmp( const void *a , const void *b ) { struct fd *c = (fd *)a; struct fd *d = (fd *)b; return c->time - d->time; } int main() { int T,N,M,i,k,j,v0,u,temp; fd ff[25]; int a[25][25],S[25],pre[25],min[25],shortest[25]; cin>>T; while(T--) { cin>>N; for(i=1;i<=N;i++) for(j=1;j<=N;j++) { cin>>a[i][j]; if(a[i][j]==-1) a[i][j]=inf; } int len=0; cin>>M; while(~scanf("%d",&v0)) { ff[len].dest=M; ff[len].time=0; ff[len].org=v0; ff[len].path[v0]=-1; for(i=1;i<=N;i++) { S[i]=0; min[i]=a[v0][i]; if(i!=v0&&min[i]<inf) pre[i]=v0; else pre[i]=-1; } S[v0]=1; min[v0]=0; for(i=1;i<=N;i++) { u=v0,temp=inf; for(j=1;j<=N;j++) { if(!S[j]&&temp>min[j]) u=j,temp=min[j]; } S[u]=1; for(k=1;k<=N;k++) { if(!S[k]&&a[u][k]<inf&&min[k]>min[u]+a[u][k]) pre[k]=u,min[k]=min[u]+a[u][k]; } } ff[len].time=min[M]; memset(shortest,0,sizeof(shortest)); k=0; shortest[k]=M; while(pre[shortest[k]]!=-1) { k++; shortest[k]=pre[shortest[k-1]]; } for(i=0;i<=k;i++) ff[len].path[i]=shortest[k-i]; len++; } qsort(ff,len,sizeof(ff[0]),cmp); printf("Org Dest Time Path\n"); for(i=0;i<len;i++) { printf("%d\t%d\t%d\t",ff[i].org,ff[i].dest,ff[i].time); for(j=0;ff[i].path[j]!=M;j++) printf("%d\t",ff[i].path[j]); printf("%d\n",M); } } return 0; }
相关文章推荐
- ZPJ - 1053 FDNY to the Rescue!(最短路 Dijkstra),POJ 1122
- zoj 1053 && poj 1122 FDNY to the Rescue!
- ZOJ1053-FDNY to the Rescue!(图论之最短路)
- POJ 1122 FDNY to the Rescue!(最短路+路径输出)
- poj 1122 FDNY to the Rescue! 最短路
- poj1122&&zoj1053 FDNY to the Rescue! ——最短路入门题_Dijkstra算法
- POJ1122_FDNY to the Rescue!(逆向建图+最短路树)
- POJ1122_FDNY to the Rescue!(逆向建图+最短路树)
- poj1122 FDNY to the Rescue! 最短路
- POJ 1122 FDNY to the Rescue!
- poj 1122 FDNY to the Rescue! 最短路径 dijkstra算法
- POJ-1122-FDNY to the Rescue!(迪杰斯特拉 反向建图 输出路径)
- poj 1122 FDNY to the Rescue!
- zoj 1053 FDNY to the Rescue!
- ZOJ&nbsp;1053&nbsp;FDNY&nbsp;to&nbsp;the&nbsp;Rescue
- POJ 1122 FDNY to the Rescue!(最短路径)
- poj 1122 FDNY to the Rescue! (dijkstra)
- POJ 1122 FDNY to the Rescue!
- POJ:1122 FDNY to the Rescue!
- ZOJ-1053 FDNY to the Rescue!