Pagini recente » Cod sursa (job #2310058) | Cod sursa (job #1870810) | Cod sursa (job #884587) | Cod sursa (job #373082) | Cod sursa (job #721773)
Cod sursa(job #721773)
#include <iostream>
#include <fstream>
#include <queue>
#define nmax 100005
using namespace std;
ifstream in("bfs.in");
ofstream out("bfs.out");
int n, m, cost[nmax];
queue<int> s;
vector< pair<int,int> > v[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)
{
cost[nod] = 0;
s.push(nod);
while( !s.empty() )
{
for ( unsigned i = 0; i < v[ s.front() ].size(); ++i )
{
if ( cost[ v[ s.front() ][i].first ] == -1 )
{
cost[ v[ s.front() ][i].first ] = cost[ s.front() ] + v[ s.front() ][i].second;
s.push( v[ s.front() ][i].first );
}
else
cost[ v[ s.front() ][i].first ] = min( cost[ v[ s.front() ][i].first ], cost[ s.front() ] + v[ s.front() ][i].second );
}
s.pop();
}
}
int main()
{
citeste();
for (int i=1; i<=n; ++i)
cost[i] = -1;
bfs(1);
for (int i=2; i<=n; ++i)
out<<cost[i]<<" ";
return 0;
}