您好,登錄后才能下訂單哦!
Minimum Transport Cost Crawling in process... Crawling failed Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
Description
Input
Output
Sample Input
5 0 3 22 -1 4 3 0 5 -1 -1 22 5 0 9 20 -1 -1 9 0 4 4 -1 20 4 0 5 17 8 3 1 1 3 3 5 2 4 -1 -1 0
Sample Output
From 1 to 3 : Path: 1-->5-->4-->3 Total cost : 21 From 3 to 5 : Path: 3-->4-->5 Total cost : 16 From 2 to 4 : Path: 2-->1-->5-->4 Total cost : 17
# include <stdio.h> # include <stdlib.h> #define INF 1 << 20 int dis[10005]; int p[10005][1005]; int map[10005][10005]; int mag[10005]; int n; void floyd() { int i,j,k; for(k=1; k<=n; k++) { for(i=1;i<=n;i++) { if( i == k || map[i][k]==-1 ) continue; for(j=1;j<=n;j++) { if( k == j || i == j || map[k][j] == -1 ) continue; int t = map[i][k] + map[k][j] + mag[k]; if(map[i][j] == -1 || map[i][j] > t) { map[i][j] = t; p[i][j] = p[i][k]; } else if(map[i][j]==t && p[i][k]<p[i][j]) { p[i][j]=p[i][k]; } } } } } void pr(int x,int y) { printf("Path: %d",x); while(p[x][y]!=y) { printf("-->%d",p[x][y]); x=p[x][y]; } printf("-->%d\n",y); } int main() { int kai,jie; while(scanf("%d",&n)!=EOF&&n!=0) { for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) { scanf("%d",&map[i][j]); p[i][j]=j; } for(int i=1;i<=n;i++) scanf("%d",&mag[i]); floyd(); while(scanf("%d%d",&kai,&jie)!=EOF&&kai!=-1&&jie!=-1) { printf("From %d to %d :\n",kai,jie); if(kai!=jie) { pr(kai,jie); printf("Total cost : "); printf("%d\n",map[kai][jie]); printf("\n"); } else { printf("Path: %d\n",kai); printf("Total cost : "); printf("0\n"); printf("\n"); } } } }
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。