Cod sursa(job #3350200)

Utilizator marap2011Paun Mara marap2011 Data 6 aprilie 2026 11:19:25
Problema Algoritmul lui Dijkstra Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.03 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin ("dijkstra.in") ;
ofstream fout ("dijkstra.out") ;

const int INF = 1e9 + 5 ;

vector < pair < int , int > > g[50005] ;

int d[50005] ;

void dijkstra ( int nod )
{
     for ( auto it : g[nod] )
     {
         if ( d[nod] + it.second < d[it.first] )
         {
             d[it.first] = d[nod] + it.second ;
             dijkstra ( it.first ) ;
         }
     }
}

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;
}