Cod sursa(job #3202491)

Utilizator camelia22Dragoiu Camelia camelia22 Data 11 februarie 2024 17:39:59
Problema Sate Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <iostream>
#include <fstream>
#define nrm 100025
#define nrn 30001
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
int t[3][2*nrm], viz[nrn], x, y, n, m, m1, m2, i, nr,k, start[nrn], c[nrn], km[nrn];
long long s;
void bf(int inc, int sf)
{
    int pi=1, ps=1, k, val;
    c[pi]=inc; viz[inc]=1;
    while (ps<=pi && k!=sf)
    {
        k=c[ps];
        val=start[k];
        while (val)
        {
            if (!viz[t[0][val]])
            {
                c[++pi]=t[0][val];
                viz[t[0][val]]=1;
                if (k<t[0][val])
                    km[t[0][val]]=km[k]+t[2][val];
                else
                    km[t[0][val]]=km[k]-t[2][val];
            }
            val=t[1][val];
        }
        ps++;
    }
}
int main()
{
    f>>n>>m>>m1>>m2;
    for (i=1;i<=m;i++)
    {
        f>>x>>y>>nr;
        ///formez listele de adiacenta
        k++;
        t[0][k]=y; t[1][k]=start[x]; start[x]=k;
        t[2][k]=nr;///salvez nr de km
        k++;
        t[0][k]=x; t[1][k]=start[y]; start[y]=k;
        t[2][k]=nr;///salvez nr de km
    }
    bf(m1,m2);
    g<<km[m2];
    return 0;
}