Cod sursa(job #3350201)

Utilizator marap2011Paun Mara marap2011 Data 6 aprilie 2026 11:24:07
Problema Algoritmul lui Dijkstra Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.4 kb
#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;
}