zoukankan      html  css  js  c++  java
  • hdu 2680 (Dijkstra)

    快放暑假了,训练又要开始了。先从熟悉的图论开始做吧。

    题意:一张有向图中有若干起点一个终点,让你算最短路,方法很简单只需人为加一个起点指向所有起点让后距离为0即可。

    代码如下:

     1 #include <stdio.h>
     2 #include <string.h>
     3 #include <algorithm>
     4 #include <set>
     5 #include <iostream>
     6 #include <queue>
     7 #include <map>
     8 #include <math.h>
     9 #include <string>
    10 #define MP(a, b) make_pair(a, b)
    11 #define PB(a) push_back(a)
    12 using namespace std;
    13 
    14 typedef pair<int, int> pii;
    15 const int LEN = 1010;
    16 const int INF = 0x3f3f3f3f;
    17 vector<pii> Map[LEN];
    18 int n, m, dis[LEN];
    19 
    20 void Dijkstra(int vex){
    21     int vis[LEN] = {0};
    22     priority_queue<pii, vector<pii>, greater<pii> > q;
    23     for(int i=0; i<=n; i++) dis[i] = INF;
    24     dis[vex] = 0;
    25     q.push(MP(dis[vex], vex));
    26     while(!q.empty()){
    27         pii nvex = q.top(); q.pop();
    28         int nv = nvex.second;
    29         if(vis[nv]) continue;
    30         vis[nv] = 1;
    31         for(int i=0; i<Map[nv].size(); i++){
    32             int x = Map[nv][i].first, y = Map[nv][i].second;
    33             if(dis[x] > dis[nv] + y){
    34                 dis[x] = dis[nv] + y;
    35                 q.push(MP(dis[x], x));
    36             }    
    37         }
    38     }
    39 }
    40 
    41 int main()
    42 {
    43 //    freopen("in.txt", "r", stdin);
    44 
    45     int a, b, c, tn, s, e;
    46     while(scanf("%d%d%d", &n, &m, &e)!=EOF){
    47         for(int i=0; i<LEN; i++) Map[i].clear();
    48         for(int i=0; i<m; i++){
    49             scanf("%d%d%d", &a, &b, &c);
    50             Map[a].PB(MP(b, c));
    51         }
    52         scanf("%d", &tn);
    53         for(int i=0; i<tn; i++){
    54             scanf("%d", &s);
    55             Map[0].PB(MP(s, 0));
    56         }
    57         Dijkstra(0);
    58         if(dis[e] != INF) printf("%d
    ", dis[e]);
    59         else puts("-1");
    60     }
    61     return 0;
    62 }
    View Code
  • 相关阅读:
    Mysql Dump
    Amazon的Dynamo中用到的几种技术
    一致性哈希
    eclipse下提交job时报错mapred.JobClient: No job jar file set. User classes may not be found.
    eclipse中java heap space问题解决方法
    hadoop的启动步骤
    java根据经纬度计算距离
    eclipse创建Enterprise Application project没有web.xml
    cygwin+hadoop安装步骤和问题
    java程序员修炼
  • 原文地址:https://www.cnblogs.com/shu-xiaohao/p/3789222.html
Copyright © 2011-2022 走看看