Cod sursa(job #3188295)

Utilizator AdrianRosuRosu Adrian Andrei AdrianRosu Data 2 ianuarie 2024 16:31:40
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <bits/stdc++.h>
#define DIM 100001

using namespace std;

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

vector < pair <int, int> > G[DIM];

int dp[DIM];

int n, m, i, x, y, z, s, f;

void bfs(int node){

    for(i=1;i<=n;i++)

        dp[i] = 1e9;

    queue <int> Q;

    Q.push(node);

    dp[node] = 0;

    while(!Q.empty()){

        int node = Q.front();

        Q.pop();

        for(int i = 0 ; i < G[node].size() ; i++){

            if(dp[node] + G[node][i].second < dp[G[node][i].first]){

                dp[G[node][i].first] = dp[node] + G[node][i].second;

                Q.push(G[node][i].first);

            }

        }

    }

}

int main(){

    fin >> n >> m >> s >> f;

    if(s > f)

        swap(s, f);

    while(m--){

        fin >> x >> y >> z;

        G[x].push_back(make_pair(y, z));

        G[y].push_back(make_pair(x, -z));

    }

    bfs(s);

    fout << dp[f];

    return 0;

}