Pagini recente » Cod sursa (job #959688) | Cod sursa (job #2245117) | Cod sursa (job #1255214) | Cod sursa (job #1905961) | Cod sursa (job #3243923)
#include<bits/stdc++.h>
using namespace std;
const int inf = (1 << 30);
const int nm = 50005;
int n, m;
int d[nm];
bool inqueue[nm];
vector<pair<int, int>> g[nm];
struct compare
{
bool operator()(int x, int y)
{
return d[x] > d[y];
}
};
priority_queue<int, vector<int>, compare> que;
void solve(int start)
{
for(int i = 1; i < n; i++)
d[i] = inf;
d[start] = 0;
que.push(start);
inqueue[start] = true;
while(!que.empty())
{
int current = que.top();
que.pop();
inqueue[current] = false;
for(size_t i = 0; i < g[current].size(); i++)
{
int v = g[current][i].first;
int c = g[current][i].second;
if(d[current] + c < d[v])
{
d[v] = d[current] + c;
if(inqueue[v] == false)
{
que.push(v);
inqueue[v] = true;
}
}
}
}
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
freopen("dijkstra.in", "r", stdin);
freopen("dijkstra.out", "w", stdout);
cin>>n>>m;
for(int i = 1; i <= m; i++)
{
int x, y, c;
cin>>x>>y>>c;
g[x].push_back(make_pair(y, c));
}
solve(1);
for(int i = 2; i <= n; i++)
{
if(d[i] != inf)
cout<<d[i]<<" ";
else
cout<<"0 ";
}
}