Cod sursa(job #2420387)

Utilizator bluestorm57Vasile T bluestorm57 Data 11 mai 2019 18:09:23
Problema Sate Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <fstream>
#include <deque>
#include <vector>

using namespace std;

ifstream f("sate.in");
ofstream g("sate.out");

const int NMAX = 30005;
const int inf = 1e9;

struct variabila{
    int lo, hi;
};

vector <variabila> v[NMAX];
deque <int> q;
int n,m,x,y;
int dist[NMAX];

void bfs(){
    int node,i;
    while(!q.empty()){
        node = q.front();
        q.pop_front();
        for(i = 0 ; i < v[node].size(); i++)
            if(v[node][i].hi + dist[node] < dist[v[node][i].lo]){
                dist[v[node][i].lo] = v[node][i].hi + dist[node];
                q.push_back(v[node][i].lo);
            }
    }

}

int main(){
    int i,a,b,d;
    variabila A;
    f >> n >> m >> x >> y;
    for(i = 1 ; i <= m ; i++){
        f >> a >> b >> d;
        A.lo = b;
        A.hi = d;
        v[a].push_back(A);
        A.lo = a;
        A.hi = -d;
        v[b].push_back(A);
    }

    for(i = 1 ; i <= n ; i++)
        dist[i] = inf;

    q.push_back(x);
    dist[x] = 0;
    bfs();

    g << dist[y];
    return 0;
}