Cod sursa(job #2825185)

Utilizator mihaistamatescuMihai Stamatescu mihaistamatescu Data 4 ianuarie 2022 11:48:55
Problema Sate Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <fstream>
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
struct drum{
    int vec, dis;
};
vector<drum> L[30010];
queue<int> q;
int dm[30010], n, m, X, Y, a, b, d;
int main () {
    ifstream fin ("sate.in");
    ofstream fout ("sate.out");
    fin>>n>>m>>X>>Y;
    for (int i=1;i<=n;i++){
        dm[i]=INT_MAX;
    }
    for (int i=1;i<=m;i++){
        fin>>a>>b>>d;
        L[a].push_back({b, d});
        L[b].push_back({a, d});
    }
    q.push(X);
    dm[X]=0;
    while (!q.empty()){
        for (int i=0;i<L[q.back()].size();i++){
            drum x = L[q.back()][i];
            if (q.back()<x.vec){
                if (dm[q.back()]+x.dis<dm[x.vec]){
                    dm[x.vec] = dm[q.back()]+x.dis;
                    q.push(x.vec);
                }
            }
            if (q.back()>x.vec){
                if (dm[q.back()]-x.dis<dm[x.vec]){
                    dm[x.vec] = dm[q.back()]-x.dis;
                    q.push(x.vec);
                }
            }
        }
        q.pop();
    }
    fout<<dm[Y];
    return 0;
}