Cod sursa(job #1733942)

Utilizator tudorgalatanRoman Tudor tudorgalatan Data 26 iulie 2016 10:29:10
Problema Sate Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <bits/stdc++.h>

using namespace std;

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

vector <int> v[30001];
vector <int> dist[30001];
queue <int> Q;
bool seen[30001];
unsigned int node;
unsigned 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(J);
        v[J].push_back(I);
        dist[I][J] = dist[J][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]] == 0)
            {
                seen[v[node][i]] = 1;
                if (v[node][i] > node)
                    sol[v[node][i]] = sol[node] + dist[v[node][i]][node];
                else
                    sol[v[node][i]] = sol[node] - dist[v[node][i]][node];
                Q.push(v[node][i]);
            }
    }
    ofstream fout ("sate.out");
    fout << sol[Y]-1;
    fout.close();
    return 0;
}