zoukankan      html  css  js  c++  java
  • UVa 10986

      题目大意:网络中有n个SMTP服务器,有m条电缆将它们相连,每条电缆传输信息需要一定的时间。现在给出信息的起点和终点,计算所需的最小时间。

      有权图上的单源最短路问题(Single-Source Shortest Path, SSSP),直接使用Dijkstra算法。

     1 #include <cstdio>
     2 #include <vector>
     3 #include <queue>
     4 using namespace std;
     5 typedef pair<int, int> ii;
     6 typedef vector<ii> vii;
     7 #define INF 1e9
     8 #define TRvii(c, it) 
     9     for (vii::iterator it = (c).begin(); it != (c).end(); it++)
    10 
    11 int main()
    12 {
    13 #ifdef LOCAL
    14     freopen("in", "r", stdin);
    15 #endif
    16     int T;
    17     scanf("%d", &T);
    18     for (int kase = 1; kase <= T; kase++)
    19     {
    20         int n, m, s, t;
    21         scanf("%d%d%d%d", &n, &m, &s, &t);
    22         vector<vii> AdjList(n);
    23         for (int i = 0; i < m; i++)
    24         {
    25             int u, v, weight;
    26             scanf("%d%d%d", &u, &v, &weight);
    27             AdjList[u].push_back(ii(v, weight));
    28             AdjList[v].push_back(ii(u, weight));
    29         }
    30         vector<int> dist(n, INF);
    31         dist[s] = 0;
    32         priority_queue<ii, vector<ii>, greater<ii> > pq;
    33         pq.push(ii(0, s));
    34         while (!pq.empty())
    35         {
    36             ii top = pq.top();
    37             pq.pop();
    38             int d = top.first, u = top.second;
    39             if (d == dist[u])
    40                 TRvii(AdjList[u], it)
    41                 {
    42                     int v = it->first, weight = it->second;
    43                     if (dist[u] + weight < dist[v])
    44                     {
    45                         dist[v] = dist[u] + weight;
    46                         pq.push(ii(dist[v], v));
    47                     }
    48                 }
    49         }
    50         if (dist[t] != INF)  printf("Case #%d: %d
    ", kase, dist[t]);
    51         else  printf("Case #%d: unreachable
    ", kase);
    52     }
    53     return 0;
    54 }
    View Code
  • 相关阅读:
    牛客练习赛44 A 小y的序列 (模拟,细节)
    牛客假日团队赛10 L 乘积最大 (dp,大数)
    三分查找
    几何基础知识点
    POJ 2318 TOYS
    UVA 11916 Emoogle Grid(大步小步算法(解模方程对数) 快速幂 模的逆)
    UVA 11426 GCD
    Aladdin and the Flying Carpet(算术基本定理)
    算术基本定理
    数论总结帖
  • 原文地址:https://www.cnblogs.com/xiaobaibuhei/p/3324585.html
Copyright © 2011-2022 走看看