• hdu1385 Minimum Transport Cost


     1 #include<stdio.h>
     2 #define Max 0xfffffff
     3 #define N 600
     4 bool vis[N];
     5 int path[N][N];//昨天把path数组定义为BOOl型了,输出的时候老是死循环,昨天检查了一晚上没发现,今天多亏了我强悍的队友给我指明了错误!! 
     6 int d[N][N],cost[N];
     7 int vexnum,arcnum;
     8 void floyd()
     9 {
    10     for(int k=0;k<vexnum;++k)
    11         for(int i=0;i<vexnum;++i)
    12             for(int j=0;j<vexnum;++j){
    13                 int temp=d[i][k]+d[k][j]+cost[k];
    14                 if(d[i][j]>temp||(d[i][j]==temp&&path[i][k]<path[i][j])){
    15                     d[i][j]=temp;
    16                     path[i][j]=path[i][k];
    17                 }
    18             }
    19 }
    20 int main()
    21 {
    22     int i,j,k,start,end;
    23     while(scanf("%d",&vexnum),vexnum){
    24         for(i=0;i<vexnum;++i){
    25             for(j=0;j<vexnum;++j){
    26                 scanf("%d",&d[i][j]);
    27                 if(d[i][j]==-1)
    28                     d[i][j]=d[j][i]=Max;
    29                 path[i][j]=j;
    30             }
    31         }
    32         for(i=0;i<vexnum;++i)
    33             scanf("%d",&cost[i]);
    34         floyd();
    35         while(scanf("%d%d",&start,&end),~start||~end){
    36             printf("From %d to %d :\nPath: %d",start,end,start);
    37             start--;end--;
    38             int k=start;
    39             while(k!=end){
    40                 printf("-->%d",path[k][end]+1);
    41                 k=path[k][end];
    42             }
    43             printf("\nTotal cost : %d\n\n",d[start][end]);
    44         }
    45     }
    46     return 0;
    47 }
  • 相关阅读:
    centos7搭建kvm
    python脚本与shell脚本的结合应用
    shell脚本常用命令组合
    服务器硬盘损坏恢复过程
    linux grup引导进入单用户下
    mysql 数据库设计查询规范
    mysql 8.0 远程连接问题
    linux新加硬盘的操作
    linux 添加硬盘到/home 目录
    linux设置最大连接数
  • 原文地址:https://www.cnblogs.com/shihuajie/p/2650395.html
Copyright © 2020-2023  润新知