Cod sursa(job #1733969)

Utilizator tudorgalatanRoman Tudor tudorgalatan Data 26 iulie 2016 11:25:09
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <bits/stdc++.h>

using namespace std;

int N, X, Y, I, J;
int M, D;

vector < pair <int,int> > v[30001];
queue <int> Q;
bool seen[30001];
int node;
int i;

int sol[30001];

int main ()
{
    ifstream fin ("sate.in");
    fin >> N >> M >> X >> Y;
    for (i=1; i<=M; i++)
    {
        fin >> I >> J >> D;
        v[I].push_back(make_pair(J,D));
        v[J].push_back(make_pair(I,D));
    }
    fin.close();
    Q.push(X);
    seen[X] = 1;
    sol[X] = 1;
    while (!Q.empty())
    {
        node = Q.front();
        Q.pop();
        for (i=0; i<v[node].size(); i++)
            if (seen[v[node][i].first] == 0)
            {
                seen[v[node][i].first] = 1;
                if (v[node][i].first > node)
                    sol[v[node][i].first] = sol[node] + v[node][i].second;
                else
                    sol[v[node][i].first] = sol[node] - v[node][i].second;
                Q.push(v[node][i].first);
            }
    }
    ofstream fout ("sate.out");
    fout << sol[Y]-1;
    fout.close();
    return 0;
}