Pagini recente » Cod sursa (job #570554) | Cod sursa (job #452004) | Cod sursa (job #280302) | Cod sursa (job #2922349) | Cod sursa (job #3253385)
#include <iostream>
#include <queue>
#include <climits>
#include <vector>
#include <algorithm>
using namespace std;
bool vis[50005];
int d[50005], n;
vector<pair<int, int>> adj[50005];
priority_queue<pair<int, int>, vector<pair<int, int>>, greater<pair<int, int>>> Q;
void dijkstra(pair<int, int> nod)
{
Q.push(nod);
while(!Q.empty())
{
int min = Q.top().second;
int dist = Q.top().first;
Q.pop();
if(dist > d[min]) continue;
for(auto it : adj[min])
{
if(d[it.second] > d[min] + it.first)
d[it.second] = d[min] + it.first,
Q.push({d[it.second], it.second});
}
}
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
(void)! freopen("dijkstra.in", "r", stdin);
(void)! freopen("dijkstra.out", "w", stdout);
int m, x, y, z; cin >> n >> m;
while(m--)
{
cin >> x >> y >> z;
adj[x].push_back({z, y});
}
for(int i = 2; i <= n; ++i)
d[i] = INT_MAX;
dijkstra({0, 1});
for(int i = 2; i <= n; ++i)
{
if(d[i] == INT_MAX) d[i] = 0;
cout << d[i] << ' ';
}
return 0;
}