Cod sursa(job #2274165)

Utilizator AndreiDeltaBalanici Andrei Daniel AndreiDelta Data 1 noiembrie 2018 14:56:06
Problema Sate Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <bits/stdc++.h>
#define Dim 30007
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
int N,M,a,b,c,X,Y;
int Dcost[Dim];
bool viz[Dim];
vector  < pair < int , int > > Vf[Dim];
queue < int > C;

void BFS()
{
    C.push(X);
    viz[X]=1;
    while(!C.empty())
    {
       int nod_pred=C.front();
       int dist=Dcost[nod_pred];
       C.pop();
       if(nod_pred==Y) return;
       for(int i=0;i<Vf[nod_pred].size();i++)
       {
           int nod_cur=Vf[nod_pred][i].first;
           int cost=Vf[nod_pred][i].second;
           if(!viz[nod_cur])
           { //cout<<nod_pred<<" "<<nod_cur<<'\n';
               viz[nod_cur]=1;
               C.push(nod_cur);
               if(nod_cur<nod_pred)
               Dcost[nod_cur]=(dist-cost);
               else
               Dcost[nod_cur]=(dist+cost);
               if(nod_cur==Y) return;
           }
       }
    }
}

int main()
{
    f>>N>>M>>X>>Y;
    for(int i=1;i<=M;i++)
    {
        f>>a>>b>>c;
        Vf[a].push_back(make_pair(b,c));
        Vf[b].push_back(make_pair(a,c));
    }
    BFS();
    g<<Dcost[Y];
    return 0;
}