P1339Heat Wave G

一、题目描述

  

 

 二、解题思路

  Dijkstra模板题

三、代码实现

 1 #include "bits/stdc++.h"
 2 using namespace std;
 3 const int inf = 1e9 + 10;
 4 int graph[2510][2510];
 5 int n,m,s,t;
 6 int u,v,w;
 7 int dis[2510],vis[2510];
 8 int main()
 9 {
10     cin >> n >> m >> s >> t;
11     for(int i = 1; i <= n;i++)
12         for(int j = 1;j <= n;j++)
13             graph[i][j] = inf;
14     for(int i = 1;i <= m;i++){
15         cin >> u >> v >> w;
16         graph[u][v] = w;
17         graph[v][u] = w;
18     }
19     vis[s] = 1;
20     for(int i = 1;i <= n;i++)
21         dis[i] = graph[s][i];
22     for(int i = 2;i <= n;i++){
23         int bk = inf;
24         int id = 0;
25         for(int j = 1;j <= n;j++)
26             if(!vis[j] && dis[j] < bk){
27                 bk = dis[j];
28                 id = j;
29             }
30         vis[id] = 1;
31         for(int j = 1;j <= n;j++){
32             if(dis[j] > graph[id][j] + bk)
33                 dis[j] = graph[id][j] + bk;
34         }
35     }
36     cout << dis[t];
37     return 0;
38 }
posted @ 2022-02-13 19:37  scannerkk  阅读(26)  评论(0)    收藏  举报