Cod sursa(job #2436374)

Utilizator baltoi.teodorTeodor Baltoi baltoi.teodor Data 5 iulie 2019 16:43:14
Problema Sate Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <bits/stdc++.h>
#define NMAX 30005
#define f first
#define s second
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");
int n,m,X,Y;
vector <pair <int, int> > v[NMAX];
bool viz[NMAX];
vector<pair<int,int> > Q;
int p,u;
int lee()
{
    int dist,nod;
    p=0;
    u=0;
    Q.push_back({X,0});
    viz[X]=1;
    while(p<=u)
    {
        nod=Q[p].f;
        dist=Q[p].s;
        ++p;
        for(auto next:v[nod])
            if(!viz[next.f])
        {
            if(next.f==Y) return dist+next.s;
            viz[next.f]=1;
            Q.push_back({next.f,next.s+dist});
            u++;
        }
    }
    return 0;
}
int main()
{
    int x,y,D;
    fin>>n>>m>>X>>Y;
    for(int i=1;i<=m;++i)
    {
        fin>>x>>y>>D;
        if(x<y)
        {v[x].push_back({y,D});
        v[y].push_back({x,-D});
        }
        else{
            v[x].push_back({y,-D});
            v[y].push_back({x,D});
        }
    }

    fout<<lee();
    return 0;
}