zoukankan      html  css  js  c++  java
  • 2017ecjtu-summer training #4 UESTC 30

                                                                       最短路

                                                                                                                 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others)

    在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的T-shirt。但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线,你可以帮助他们吗?

    Input

    输入包括多组数据。

    每组数据第一行是两个整数NN,MM(N100N≤100,M10000M≤10000),NN表示成都的大街上有几个路口,标号为11的路口是商店所在地,标号为NN的路口是赛场所在地,MM则表示在成都有几条路。N=M=0N=M=0表示输入结束。

    接下来MM行,每行包括33个整数AA,BB,CC(1A1≤A,BNB≤N,1C10001≤C≤1000),表示在路口AA与路口BB之间有一条路,我们的工作人员需要CC分钟的时间走过这条路。

    输入保证至少存在11条商店到赛场的路线。

    Output

    对于每组输入,输出一行,表示工作人员从商店走到赛场的最短时间。

    Sample input and output

    Sample InputSample Output
    2 1
    1 2 3
    3 3
    1 2 5
    2 3 5
    3 1 2
    0 0
    3
    2

    题意  求最短路径

    用Floyd求最短路径

    AC代码

     1 #include <stdio.h>
     2 #include <math.h>
     3 #include <string.h>
     4 #include <stdlib.h>
     5 #include <iostream>
     6 #include <sstream>
     7 #include <algorithm>
     8 #define inf 0x3f3f3f3f
     9 using namespace std;
    10 int s[110][110];
    11 int n,m;
    12 void floyd()
    13 {
    14 
    15     for(int k=1; k<=n; k++)
    16     {
    17         for(int i=1; i<=n; i++)
    18             for(int j=1; j<=n; j++)
    19             {
    20                 if(s[i][j]>s[i][k]+s[k][j])
    21                     s[i][j]=s[i][k]+s[k][j];
    22             }
    23     }
    24 }
    25 int main()
    26 {
    27     while(scanf("%d%d",&n,&m)!=EOF)
    28     {
    29         if(n==0&&m==0)
    30             break;
    31         for(int i=1; i<=n; i++)
    32         {
    33             for(int j=1; j<=n; j++)
    34                 s[i][j]=inf;
    35             s[i][i]=0;
    36         }
    37 
    38         int a,b,c;
    39         while(m--)
    40         {
    41             scanf("%d%d%d",&a,&b,&c);
    42             if(s[a][b]>c)
    43                 s[a][b]=s[b][a]=c;
    44         }
    45 
    46         floyd();
    47         printf("%d
    ",s[1][n]);
    48     }
    49     return 0;
    50 }
  • 相关阅读:
    flex布局
    spring与mybatis三种整合方法
    jquery 、 JS 脚本参数的认识与使用
    SSH框架构建微信公众帐号服务器小技巧
    网页中插入QQ在线功能
    Java中Runnable和Thread的区别
    web.xml的初始化参数
    Struts2中实现Web项目的初始化工作
    使用Spring整合javaMail发用邮件
    java中Commons-fileupload实现上传
  • 原文地址:https://www.cnblogs.com/stranger-/p/7147943.html
Copyright © 2011-2022 走看看