zoukankan      html  css  js  c++  java
  • 最短路 dijkstra+优先队列+邻接表

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

     1 #include<iostream>
     2 #include<queue>
     3 #include<functional>
     4 #include<algorithm>
     5 #include<cstring>
     6 #include<vector>
     7 using namespace std;
     8 const int N = 1e3+5;
     9 const int INF = 1e7;
    10 typedef pair<int, int> pll;
    11 struct Node
    12 {
    13     int next;
    14     int s;
    15     Node(int nt, int d):next(nt), s(d){};
    16 };
    17 vector<Node> G[N];
    18 int dis[N];
    19 void dijkstra()
    20 {
    21     priority_queue<pll, vector<pll>, greater<pll> >q;
    22     q.push(pll (0,1));// 距离 位置
    23     while(!q.empty())
    24     {
    25         pll temp = q.top(); q.pop();
    26         int x = temp.second, ss = temp.first;
    27         if(dis[x]!= ss)
    28            continue;
    29         for(int i = 0; i < G[x].size(); i++)
    30         {
    31             int y = G[x][i].next, d = G[x][i].s;
    32             if( dis[y] > dis[x] + d)
    33             {
    34                 dis[y]= dis[x]+d;
    35                 q.push(pll (dis[y],y));
    36             }
    37         }
    38     }
    39 }
    40 void init(int n)
    41 {
    42     for(int i = 1; i <= n; i++)
    43         {
    44             dis[i] = INF;
    45             G[i].clear();
    46         }
    47 }
    48 int main()
    49 {
    50     ios::sync_with_stdio(false);
    51     cin.tie(0);
    52     cout.tie(0);
    53     int n, m;
    54     while(cin >> n >> m, n+m)
    55     {
    56         init(n);
    57         int x, y, d;
    58         for(int i = 1; i <= m; i++)
    59         {
    60             cin >> x >> y >> d;
    61             G[x].push_back(Node(y,d));
    62             G[y].push_back(Node(x,d));
    63         }
    64         dis[1] = 0;
    65         dijkstra();
    66         cout << dis[n] << endl;
    67     }
    68     return 0;
    69 }
    博主QQ:1073223357 欢迎大家通过QQ和我交流问题 同时也欢迎大家加入ACM跨校gaygay群676646254 版权声明:允许转载,转载时请同时附上原博客链接。
  • 相关阅读:
    三种方法使HTML单页面输入密码才能访问
    JAVA知识汇总
    session 一致性的解决方案
    Debian 9 Stretch国内常用镜像源
    Java开发工具推荐
    Centos配置vsftpd
    [转]php实时输出内容
    php javascript comet
    使用安装 php-memcache-client
    [转]网页实时聊天之js和jQuery实现ajax长轮询 PHP
  • 原文地址:https://www.cnblogs.com/MingSD/p/8387048.html
Copyright © 2011-2022 走看看