• nyoj-115-城市平乱(dijkstra算法)


     题目链接

     1 /*
     2     Name:nyoj-115-城市平乱
     3     Copyright:
     4     Author:
     5     Date: 2018/4/25 17:28:06
     6     Description:
     7     dijkstra模板题
     8     枚举从部队所在的城市到叛乱城市取最小值 
     9 */
    10 #include <iostream>
    11 #include <cstdio>
    12 #include <cstring>
    13 #include <cmath>
    14 using namespace std;
    15 const int MAXN = 1005, INF= 0x3f3f3f3f;
    16 int dis[MAXN], g[MAXN][MAXN], N, M, P, Q, army[MAXN], src;
    17 bool v[MAXN];
    18 
    19 void dijkstra() {
    20     int N = M;
    21     for (int i=1; i<=N; i++) dis[i] = INF;
    22     dis[src] = 0;
    23     memset(v, 0, sizeof(v));
    24     for (int i=1; i<=N; ++i) {
    25         int mark =-1, mindis=INF;
    26         for (int j=1; j<=N; j++) {
    27             if(!v[j] && dis[j]<mindis) {
    28                 mindis = dis[j];
    29                 mark = j;
    30             }
    31         }
    32         v[mark] = 1;
    33         for (int j=1; j<=N; j++) {
    34             if (!v[j]) {
    35                 dis[j] = min(dis[j], dis[mark] + g[mark][j]);
    36             }
    37         }
    38     }
    39 }
    40 int main()
    41 {
    42     int t;
    43     cin>>t;
    44     while (t--) {
    45         memset(g, 0x3f, sizeof(g));
    46         memset(army, 0, sizeof(army));
    47         cin>>N>>M>>P>>Q;
    48          for (int i=0; i<N; i++) {
    49              cin>>army[i];
    50          }
    51          for (int i=0; i<P; i++) {
    52              int x, y, cost;
    53              cin>>x>>y>>cost;
    54             if (g[x][y]  < cost) continue;
    55             g[x][y] = cost;
    56             g[y][x] = cost;
    57          }
    58          int mindis = 0x3f3f3f3f;
    59          for (int i=0; i<N; i++) {
    60              memset(dis, 0, sizeof(dis));
    61              src = army[i];
    62              dijkstra();
    63              mindis = min(mindis, dis[Q]);
    64          }
    65          cout<<mindis<<endl;
    66     }
    67     return 0;
    68 }
  • 相关阅读:
    [hdu1402]A * B Problem Plus(NTT)
    拦截导弹问题(Noip1999)
    删数问题(Noip1994)
    1217:棋盘问题
    随笔功能测试
    教师派8
    教师派7
    教师派6
    教师派5
    教室派4
  • 原文地址:https://www.cnblogs.com/slothrbk/p/8963348.html
Copyright © 2020-2023  润新知