Cod sursa(job #2273222)

Utilizator eilerGabriel-Ciprian Stanciu eiler Data 31 octombrie 2018 10:45:41
Problema Sate Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>
#include <vector>
#include <queue>
using namespace std;

int n, m, dx, dy, dist[30001];
vector<int> l[30001], d[30001];

int main(){
    int i, a, b, ds;

    ifstream fin ("sate.in");
    fin >> n >> m >> dx >> dy;
    for (i=0; i<m; i++){
        fin >> a >> b >> ds;
        l[a].push_back(b);
        d[a].push_back(ds);
        l[b].push_back(a);
        d[b].push_back(-ds);
    }
    fin.close();

    for (i=1; i<=n; i++)
        dist[i]=-1;
    dist[dx]=0;

    queue<int> q;
    q.push(dx);

    while (!q.empty()){
        a=q.front();
        q.pop();

        for (i=0; i<l[a].size(); i++){
            b=l[a][i];
            if (dist[b]==-1){
                dist[b]=dist[a]+d[a][i];
                q.push(b);
            }
        }
    }

    ofstream fout ("sate.out");
    fout << dist[dy];
    fout.close();

    return 0;
}