Cod sursa(job #2910785)

Utilizator KarinaDKarina Dumitrescu KarinaD Data 25 iunie 2022 00:11:21
Problema Sate Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>

using namespace std;

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

const int MAX_N = 30000;

vector <int> g[MAX_N + 1];
int dist[MAX_N + 1], drum[MAX_N + 1][MAX_N + 1];
queue <int> q;

int main() {
    
    int n, m, x, y, i;
    
    fin >> n >> m >> x >> y;
    
    for ( i = 0; i < m; i++ ) {
        
        int a, b, l;
        fin >> a >> b >> l;
        
        g[a].push_back(b);
        g[b].push_back(a);
        drum[a][b] = drum[b][a] = l;
    }
    
    q.push(x);
    dist[x] = 1;
    
    while ( q.size () > 0 ){
        
        int s = q.front();
        q.pop ();
        
        for ( i = 0; i < g[s].size (); i++ ){
            if ( dist[g[s][i]] == 0 ){
                if ( g[s][i] > s )
                    dist[g[s][i]] = dist[s] + drum[s][g[s][i]];
                else
                    dist[g[s][i]] = dist[s] - drum[s][g[s][i]];
                q.push ( g[s][i] );
            }
        }
    }
    
    fout << dist[y] - 1 << ' ';
    
    
    return 0;
}