Pagini recente » Cod sursa (job #1690186) | Cod sursa (job #405817) | Cod sursa (job #2248447) | Cod sursa (job #1598251) | Cod sursa (job #1216245)
#include<fstream>
#include<set>
#include<vector>
#include<cstring>
#define pb push_back
#define mp make_pair
using namespace std;
ifstream cin("dijkstra.in");
ofstream cout("dijkstra.out");
const int NMAX = 50010;
const int inf = 1000000000;
vector< pair<int, int> > g[NMAX];
int n,m,x,y,z,i,d[NMAX];
set < pair<int, int> > q;
int main()
{
cin>>n>>m;
for ( i = 1; i <= m; i++)
{
cin >> x >> y >> z;
g[x].pb(mp(y, z));
}
for (i=2;i<=n;i++) d[i]=inf;
d[1]=0;
q.insert(mp(d[1],1));
while (!q.empty())
{
int v = q.begin()->second;
q.erase(q.begin());
for (i = 0; i < g[v].size(); i++)
{
int to = g[v][i].first, len = g[v][i].second;
if (d[v] + len < d[to])
{
q.erase(mp(d[to],to));
d[to] = d[v] + len;
q.insert(mp(d[to],to));
}
}
}
for (i = 2; i <= n; i++)
if(d[i] == inf) cout<<"0 "; else cout<<d[i]<<" ";
return 0;
}