Pagini recente » Cod sursa (job #1889523) | Istoria paginii runda/oni2014_ziua_ii | Cod sursa (job #2253195) | Clasament racovita_combate_stresul_11_12 | Cod sursa (job #2540287)
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define INF 1234567890
#define N 100001
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
vector< pair<int,int> > v[N];
int dist[N];
bool viz[N];
priority_queue < pair<int, int> > q;
int main()
{
//ios::sync_with_stdio(false);
//cin.tie(0);
int n, m, p;
fin >> n >> m;
p = 1;
for(int i = 1; i <= m; ++i)
{
int x, y, val;
fin >> x >> y >> val;
v[x].push_back({y, val});
v[y].push_back({x, val});
}
for(int i = 1; i <= n; ++i) dist[i] = INF;
dist[p] = 0;
q.push({0, p});
while(!q.empty())
{
int x = q.top().second;
q.pop();
if(viz[x]) continue;
viz[x] = 1;
for(int i = 0; i < v[x].size(); ++i)
{
int y = v[x][i].first, val = v[x][i].second;
if(val + dist[x] < dist[y])
{
dist[y] = val + dist[x];
q.push({-dist[y], y});
}
}
}
for(int i = 2; i <= n; ++i)
if(dist[i] == INF) fout << "0 ";else
fout << dist[i] << " ";
return 0;
}