Cod sursa(job #2365553)

Utilizator EmplopiStefan Nitu Emplopi Data 4 martie 2019 14:42:35
Problema Sate Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <bits/stdc++.h>

std::vector < std::pair <int, int> > v[30001];
std::pair <int, long long> coada[100025];
int trec[30001], dist[30001];

int main(){
    FILE *fin, *fout;
    int n, m, x, y, i, a, b, c, dst, nod, st, dr;
    fin=fopen("sate.in", "r");
    fout=fopen("sate.out", "w");
    fscanf(fin, "%d%d%d%d", &n, &m, &x, &y);
    for(i=0;i<m;i++){
        fscanf(fin, "%d%d%d", &a, &b, &c);
        v[a].push_back({b, c});
        v[b].push_back({a, c});
    }
    st=0;
    dr=1;
    coada[st]={x, 0};
    trec[x]=1;
    while(st<dr){
        nod=coada[st].first;
        dst=coada[st].second;
        dist[nod]=dst;
        for(i=0;i<v[nod].size();i++){
            if(trec[v[nod][i].first]==0){
                trec[v[nod][i].first]=1;
                coada[dr++]={v[nod][i].first, dst+(v[nod][i].first>nod)*v[nod][i].second-(v[nod][i].first<nod)*v[nod][i].second};
            }
        }
        st++;
    }
    fprintf(fout, "%d", dist[y]);
    fclose(fin);
    fclose(fout);

    return 0;
}