Cod sursa(job #2525680)

Utilizator StanCatalinStanCatalin StanCatalin Data 17 ianuarie 2020 17:52:01
Problema Sate Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <iostream>
#include <vector>
#include <fstream>

#define nod first
#define cost second

using namespace std;

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

const int dim = 30005;

int n,m,x,y,nr,dist[dim],q[dim],st = 0,dr=-1;
vector <pair<int,int> > vec[dim];

void BFS(int start)
{
    dist[start] = 0;
    q[++dr] = start;
    while (st <= dr)
    {
        int a = q[st++];
        for (auto v:vec[a])
        {
            if (dist[v.nod] == -1)
            {
                if (v.nod < a)
                {
                    dist[v.nod] = dist[a] - v.cost;
                    q[++dr] = v.nod;
                }
                else
                {
                    dist[v.nod] = dist[a] + v.cost;
                    q[++dr] = v.nod;
                }
            }
        }
    }
}

int main()
{
    in >> n >> m >> x >> y;
    for (int i=1; i<=n; i++) dist[i] = -1;
    for (int i=1,a,b,c; i<=m; i++)
    {
        in >> a >> b >> c;
        vec[a].push_back({b,c});
        vec[b].push_back({a,c});
    }
    BFS(x);
    out << dist[y];
    return 0;
}