Pagini recente » Cod sursa (job #1154804) | Cod sursa (job #1213399) | Cod sursa (job #491814) | Cod sursa (job #2541432) | Cod sursa (job #831891)
Cod sursa(job #831891)
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
using namespace std ;
#define inf 100000000
#define maxn 50001
int n, m ;
vector< pair<int, int> > graf[maxn] ;
vector< int > dist ;
queue< int > coada ;
void solve()
{
dist.resize( n + 1, inf ) ;
dist[1] = 0 ;
coada.push( 1 ) ;
while( ! coada.empty() )
{
int nod = coada.front() ;
for(size_t i = 0; i < graf[nod].size(); ++i )
{
if( dist[ graf[nod][i].first ] > dist[nod] + graf[nod][i].second )
{
dist[ graf[nod][i].first ] = dist[nod] + graf[nod][i].second ;
coada.push( graf[nod][i].first ) ;
}
}
coada.pop() ;
}
}
int main()
{
freopen("dijkstra.in", "r", stdin);
freopen("dijkstra.out", "w", stdout);
scanf("%d%d", &n, &m);
for(int i = 1; i <= m; ++i )
{
int a, b, cost ;
scanf("%d%d%d", &a, &b, &cost);
graf[a].push_back( make_pair( b, cost ) ) ;
}
solve() ;
for(int i = 2; i <= n; ++i )
{
if( dist[i] == inf )
dist[i] = 0 ;
printf("%d ", dist[i]);
}
return 0 ;
}