Pagini recente » Cod sursa (job #2232563) | Cod sursa (job #14491) | Cod sursa (job #736786) | Cod sursa (job #1391667) | Cod sursa (job #714343)
Cod sursa(job #714343)
#include <iostream>
#include <fstream>
#include <vector>
#define nmax 250005
using namespace std;
ifstream in("dijkstra.in");
ofstream out("dijkstra.out");
vector< pair<int,int> > v[nmax];
int n, m, cost[nmax], L, s[nmax];
void citeste()
{ int x, y, c;
in>>n>>m;
for (int i=1; i<=m; ++i)
{
in>>x>>y>>c;
v[x].push_back(make_pair(y,c));
v[y].push_back(make_pair(x,c));
}
}
void bfs(int nod)
{
L = 1;
s[L] = nod;
cost[nod] = 0;
for (int i = 1; i <= L; ++i)
{
for (unsigned j = 0; j < v[i].size(); ++j)
{
if ( cost[ v[ s[i] ][j].first ] == -1 )
{
s[++L] = v[i][j].first;
cost[ s[L] ] = cost[ s[i] ] + v[ s[i] ][j].second;
}
else
cost[ v[ s[i] ][j].first ] = min( cost[ v[ s[i] ][j].first ], cost[ s[i] ] + v[ s[i] ][j].second );
}
}
}
int main()
{
citeste();
for (int i=1; i<=n; ++i)
cost[i] = -1;
bfs(1);
for (int i=2; i<=n; ++i)
if ( cost[i] == -1 ) cout<<"0 ";
else cout<<cost[i]<<" ";
return 0;
}