• HDU2544--最短路


    最短路
    Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 21480 Accepted Submission(s): 9168


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



    Input
    输入包括多组数据。每组数据第一行是两个整数N、M(N<=100,M<=10000),N表示成都的大街上有几个路口,标号为1的路口是商店所在地,标号为N的路口是赛场所在地,M则表示在成都有几条路。N=M=0表示输入结束。接下来M行,每行包括3个整数A,B,C(1<=A,B<=N,1<=C<=1000),表示在路口A与路口B之间有一条路,我们的工作人员需要C分钟的时间走过这条路。
    输入保证至少存在1条商店到赛场的路线。


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


    Sample Input
    2 1
    1 2 3
    3 3
    1 2 5
    2 3 5
    3 1 2
    0 0


    Sample Output
    3
    2


    Source
    UESTC 6th Programming Contest Online


    Recommend
    lcy

    此题被称为神级试用模板题,四种方法都可以。

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<iostream>
     4 #include<algorithm>
     5 #include<cmath>
     6 using namespace std;
     7 
     8 #define INF 9999999
     9 int edge[101][101];
    10 int dis[101];
    11 int vis[101];
    12 int n,m;
    13 
    14 int dijkstra(int u0)
    15 {
    16     int i,j,k;
    17     for(i=1;i<=n;i++)
    18     {
    19         dis[i]=edge[u0][i];
    20         vis[i]=0;
    21     }
    22     vis[u0]=1;
    23     dis[u0]=0;
    24     for(i=1;i<n;i++)
    25     {
    26         int mmin=INF,v=-1;
    27         for(j=1;j<=n;j++)
    28         {
    29             if(vis[j]!=1&&dis[j]<mmin)
    30             {
    31                 v=j;
    32                 mmin=dis[j];
    33             }
    34         }
    35         if(v!=-1)
    36         {
    37             vis[v]=1;
    38             for(k=1;k<=n;k++)
    39             {
    40                 if(edge[v][k]!=INF&&dis[v]+edge[v][k]<dis[k])
    41                 {
    42                     dis[k]=dis[v]+edge[v][k];
    43                 }
    44             }
    45         }
    46     }
    47     return dis[n];
    48 }
    49 
    50 
    51 int main()
    52 {
    53     while(scanf("%d%d",&n,&m)!=EOF)
    54     {
    55         if(!n&&!m)break;
    56         memset(edge,0,sizeof(edge));
    57         int i,j;
    58         for(i=1;i<=n;i++)
    59         {
    60             for(j=1;j<=n;j++)
    61             {
    62                 if(i==j)edge[i][j]=0;
    63                 else if(edge[i][j]==0)edge[i][j]=INF;
    64             }
    65         }
    66         for(i=1;i<=m;i++)
    67         {
    68             int u,v,w;
    69             scanf("%d%d%d",&u,&v,&w);
    70             if(w<edge[u][v])
    71             {
    72                 edge[u][v]=edge[v][u]=w;
    73             }
    74         }
    75         int u0=1;
    76         int ans=dijkstra(u0);
    77         printf("%d
    ",ans);
    78     }
    79     return 0;
    80 }
    View Code
  • 相关阅读:
    nice -n 10 bash 和 chrt 10 bash 和 echo -17 > /proc/PID/oom_score_adj
    使用NGINX+LUA实现WAF功能 和nginx 防盗链
    hdfs 通过命令坏块监测和删除或者地址获取参数做监控
    kafka 的server.properties
    ntpd服务
    kafka笔记博客
    k8s高可用
    K8S集群Master高可用实践
    String:字符串常量池
    如何设计出优秀的Restful API?
  • 原文地址:https://www.cnblogs.com/zafuacm/p/3213417.html
Copyright © 2020-2023  润新知