Pagini recente » Cod sursa (job #2384019) | Cod sursa (job #1419682) | Borderou de evaluare (job #1562806) | Cod sursa (job #1491850) | Cod sursa (job #3350201)
#include <bits/stdc++.h>
#define pi pair<int,int>
using namespace std;
ifstream fin ("dijkstra.in") ;
ofstream fout ("dijkstra.out") ;
const int INF = 1e9 + 5 ;
priority_queue < pi , vector < pi > , greater < pi > > pq ;
vector < pair < int , int > > g[50005] ;
int d[50005] ;
void dijkstra ( int nod )
{
pq.push({0,nod}) ;
while ( ! pq.empty() )
{
int dist = pq.top().first ;
int u = pq.top().second ;
pq.pop() ;
if ( dist > d[u] )
continue ;
for ( auto it : g[u] )
{
int v = it.first ;
int wei = it.second ;
if ( d[u] + wei < d[v] )
{
d[v] = d[u] + wei ;
pq.push({d[v],v}) ;
}
}
}
}
void solve ()
{
int n , m ;
fin >> n >> m ;
for ( int i = 1 ; i <= m ; i ++ )
{
int x , y , c ;
fin >> x >> y >> c ;
g[x].push_back({y,c}) ;
g[y].push_back({x,c}) ;
}
for ( int i = 2 ; i <= n ; i ++ )
d[i] = INF ;
dijkstra ( 1 ) ;
for ( int i = 2 ; i <= n ; i ++ )
if ( d[i] != INF )
fout << d[i] << " " ;
else
fout << 0 << " " ;
}
int main()
{
std :: ios_base :: sync_with_stdio ( false ) ;
fin.tie(0) ;
fout.tie(0) ;
solve() ;
return 0;
}