Pagini recente » Cod sursa (job #3224512) | Cod sursa (job #735712) | Cod sursa (job #2084840) | Cod sursa (job #205865) | Cod sursa (job #1862543)
#include <bits/stdc++.h>
using namespace std;
#define ios ios_base::sync_with_stdio(false);cin.tie(0);
#define setnow clock_t tStart=clock();
#define time (double)(clock() - tStart)/CLOCKS_PER_SEC;
typedef long long ll;
typedef long long int lli;
typedef pair < int, int> dbl;
const int maxInt = 1e9*2;
const lli maxLong = 1e18*2;
//
int dist[50002];
vector < pair < int, int > > adj[50002];
priority_queue< pair <int, int> , vector < pair < int, int > > , greater < pair <int, int > > > heap;
int n, m;
int INF = 1e9*2;
int Dijkstra(int source){
memset(dist, INF, sizeof(dist));
dist[source] = 0;
heap.push( make_pair(0, source));
while(!heap.empty()){
int node = heap.top().second;
int lng = heap.top().first;
heap.pop();
if(lng != dist[node])
continue;
for(int i = 0; i < adj[node].size(); i++){
int to = adj[node][i].first;
int length = adj[node][i].second;
if(dist[to] > dist[node] + length){
dist[to] = dist[node] + length;
heap.push( make_pair (dist[to], to));
}
}
}
}
int main(){
freopen("dijkstra.in", "r", stdin);
freopen("dijkstra.out", "w", stdout);
scanf("%d %d", &n, &m);
for(int i = 0; i < m; i++){
int a, b, price;
//cin >> a >> b >> price;
scanf("%d %d %d", &a, &b, &price);
adj[a].push_back( make_pair(b,price));
}
Dijkstra(1);
for(int i = 2; i <= n; i++)
if(dist[i] >= maxInt)
printf("%d ", 0);
else
printf("%d ", dist[i]);
}