zoukankan      html  css  js  c++  java
  • hdu 1385 Minimum Transport Cost

    http://acm.hdu.edu.cn/showproblem.php?pid=1385

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <algorithm>
     4 #define maxn 1001
     5 using namespace std;
     6 const int inf=9999999;
     7 
     8 int g[maxn][maxn],tax[maxn],pre[maxn][maxn];
     9 int m,n,s,e;
    10 
    11 void inti()
    12 {
    13     for(int i=1; i<=n; i++)
    14     {
    15         for(int j=1; j<=n; j++)
    16         {
    17             if(i==j) g[i][j]=0;
    18             else g[i][j]=inf;
    19         }
    20     }
    21 }
    22 
    23 void floyd()
    24 {
    25     for(int k=1; k<=n; k++)
    26     {
    27         for(int i=1; i<=n; i++)
    28         {
    29             for(int j=1; j<=n; j++)
    30             {
    31                 if(g[i][j]>(g[i][k]+g[k][j]+tax[k]))
    32                 {
    33                     g[i][j]=g[i][k]+g[k][j]+tax[k];
    34                     pre[i][j]=pre[i][k];
    35                 }
    36                 else if(g[i][j]==g[i][k]+g[k][j]+tax[k])
    37                 {
    38                     if(pre[i][j]>pre[i][k])
    39                         pre[i][j]=pre[i][k];
    40                 }
    41             }
    42         }
    43     }
    44 }
    45 
    46 int main()
    47 {
    48     while(scanf("%d",&n)!=EOF)
    49     {
    50         if(n==0) break;
    51         inti();
    52         for(int i=1; i<=n; i++)
    53         {
    54             for(int j=1; j<=n; j++)
    55             {
    56                 scanf("%d",&m);
    57                 if(m!=-1)
    58                     g[i][j]=m;
    59                 pre[i][j]=j;
    60             }
    61         }
    62         for(int i=1; i<=n; i++)
    63         {
    64             scanf("%d",&tax[i]);
    65         }
    66         floyd();
    67         scanf("%d%d",&s,&e);
    68         while(1)
    69         {
    70             if(s==-1&&e==-1) break;
    71             printf("From %d to %d :
    ",s,e);
    72             printf("Path: %d",s);
    73             int s1=s;
    74             while(s!=e)
    75             {
    76                 printf("-->%d",pre[s][e]);
    77                 s=pre[s][e];
    78             }
    79             printf("
    ");
    80             printf("Total cost : %d
    ",g[s1][e]);
    81             scanf("%d %d",&s,&e);
    82             printf("
    ");
    83         }
    84     }
    85     return 0;
    86 }
    View Code
  • 相关阅读:
    JavaScript 正则表达式中的特殊字符
    framework —— throttles(访问频率控制)
    framework —— permission(权限)
    framework —— auth认证
    算法——基础知识
    算法——解迷宫
    算法
    爬虫 ==》 同步调用
    asyncio模块
    Requests模块
  • 原文地址:https://www.cnblogs.com/fanminghui/p/3674104.html
Copyright © 2011-2022 走看看