zoukankan      html  css  js  c++  java
  • HDU 2544 最短路 (dijkstra+堆优化)

    原文链接:https://www.cnblogs.com/xwl3109377858/p/11403644.html


    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

     

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<cmath>
     5 #include<algorithm>
     6 #include<map>
     7 #include<set>
     8 #include<vector>
     9 #include<queue>
    10 #include<list>
    11 #include<stack>
    12 //#include<unordered_map>
    13 using namespace std;
    14 #define ll long long 
    15 const int mod=1e9+7;
    16 const int inf=1e9+7;
    17 
    18 const int maxn=1e5+10;
    19 
    20 typedef struct
    21 {
    22     int to;
    23     int cost;
    24 }St;
    25 
    26 vector<St>edge[maxn];//vector邻接表建图
    27 
    28 typedef pair<int,int> P;
    29 
    30 int dis[maxn];
    31 
    32 int n,m;
    33 
    34 int x,y,w;
    35 
    36 inline void dijkstra(int startt)
    37 {
    38     memset(dis,0x3f3f3f3f,sizeof(dis));
    39     
    40     priority_queue<P,vector<P>,greater<P> >q;
    41     q.push(make_pair(0,startt));//pair<weight,point>
    42     dis[startt]=0;
    43     
    44     while(!q.empty())
    45     {
    46         P now=q.top();
    47         q.pop();
    48         
    49         int v=now.second;
    50         
    51         if(dis[v]<now.first)
    52             continue;
    53         
    54         for(int i=0;i<edge[v].size();i++)
    55         {
    56             St e=edge[v][i];
    57             
    58             if(dis[e.to]>dis[v]+e.cost)
    59             {
    60                 dis[e.to]=dis[v]+e.cost;
    61                 q.push(make_pair(dis[e.to],e.to));
    62             }
    63         }
    64      } 
    65  } 
    66  
    67 int main()
    68 {
    69     ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    70     
    71     while(cin>>n>>m&&(n||m))
    72     {
    73         for(int i=1;i<=n;i++)
    74             edge[i].clear();
    75             
    76         for(int i=0;i<m;i++)
    77         {
    78             cin>>x>>y>>w;
    79             edge[x].push_back(St{y,w});
    80             edge[y].push_back(St{x,w});
    81          } 
    82         
    83         dijkstra(1);
    84         
    85         cout<<dis[n]<<endl;
    86     }
    87      
    88     return 0;
    89 }

     

     

    大佬见笑,,
  • 相关阅读:
    数据字典的应用实例
    数据字典动态性能表(视图)
    MySQL exists的用法介绍
    Don’t Assume – Per Session Buffers
    MySQL 5.5: InnoDB Change Buffering
    Fixing Poor MySQL Default Configuration Values
    A quest for the full InnoDB status
    MySQL : interactive_timeout v/s wait_timeout
    Mydumper & Myloader Documentation
    InnoDB Plugin文件格式(概述)
  • 原文地址:https://www.cnblogs.com/xwl3109377858/p/11403644.html
Copyright © 2011-2022 走看看