Pagini recente » Cod sursa (job #1542564) | Cod sursa (job #2010719) | Cod sursa (job #2563491) | Rating Taran Andrei Claudiu (claudiu8393) | Cod sursa (job #2880944)
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define ii pair<int , int>
const int INF = 1e18;
int n, m, k;
vector<vector<ii>> adj;
vector<int> d, p, path;
priority_queue<ii , vector<ii> , greater<ii>> q;
void dijkstra(int s) {
d.assign(n, INF);
p.assign(n, -1);
d[s]=0;
q.push({d[s], s});
while(!q.empty()){
int v=q.top().second, d_v=q.top().first;
q.pop();
if (d_v!=d[v]) continue;
for (auto edge : adj[v]) {
int to = edge.first, len = edge.second;
if(d[v] + len < d[to]) {
d[to] = d[v] + len;
p[to] = v;
q.push({d[to] , to});
}
}
}
}
int main(){
freopen("ubuntzei.in","r",stdin);
freopen("ubuntzei.out","w",stdout);
cin>>n>>m>>k;
adj.assign(n, vector<pair<int, int>>());
int c[k];
for(int i=0;i<k;i++){
cin>>c[i];
}
while(m--){
int a, b, w;
cin>>a>>b>>w;
adj[a-1].push_back({b-1, w});
adj[b-1].push_back({a-1, w});
}
dijkstra(0);
cout<<d[n-1];
}