#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<string>
#include<vector>
#include<stack>
#include<bitset>
#include<cstdlib>
#include<cmath>
#include<set>
#include<list>
#include<deque>
#include<map>
#include<queue>
using namespace std;
typedef long long ll;
const double PI = acos(-1.0);
const double eps = 1e-6;
const int INF = 0x3f3f3f3f;
const int maxn = 100010;
int T,n,m;
struct edge {int to,cost;};
typedef pair<int,int> P;
int V;
vector<edge> G[MAXV];
int d[MAXV];
void dijkstra(int s)
{
priority_queue<P,vector<P>,greater<P>> que;
memset(d,INF,sizeof d);
d[s] = 0;
que.push(P(0,s));
while(!que.empty())
{
P p = que.top(); que.pop();
int u = p.second;
if (d[u] < p.first) continue;
for(int i = 0; i < G[u].size(); i++)
{
edge e = G[u][i];int v = e.to;
if (d[v] > d[u] + e.cost){
d[v] = d[u] + e.cost;
que.push (d[v],v);
}
}
}
}
int main (){
cin >>n>>m;
for (int i=1;i<=m;i++){
int u,v,c;
scanf ("%d%d%d",&u,&v,&c);
g[u].push_back (P(v,c));
g[v].push_back (P(u,c));
}
dijistra (1);
return 0;
}
DIJISTRA
最新推荐文章于 2023-12-26 16:44:19 发布