Cod sursa(job #1389670)

Utilizator dorumusuroiFMI - Doru Musuroi dorumusuroi Data 16 martie 2015 15:19:03
Problema Sate Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <iostream>
#include <fstream>
#include <queue>
using namespace std;

ifstream f("sate.in");
ofstream g("sate.out");
vector <int> vf[30001], pond[30001];
int viz[30001], sum[30001];
int n, m, x,y;
void citeste()
{
    int a,b, pondere;
    f>>n>>m>>x>>y;
    for(int i = 0; i < m; i++)
        {
            f>>a>>b>>pondere;
            vf[a].push_back(b);
            vf[b].push_back(a);
            pond[a].push_back(pondere);
            pond[b].push_back(pondere);
        }
}
void bf(int rad)
{
    queue <int> coada;
    coada.push(rad);
    viz[rad] = 1;
    int capat2 = 0;
    while(!coada.empty() && capat2 != y)
    {
    rad = coada.front();
    coada.pop();
    int dim = vf[rad].size();
    for(int i = 0; i < dim; i++)
    {
        capat2 = vf[rad][i];
        if(!viz[capat2])
        {
            coada.push(capat2);
            viz[capat2] = 1;
            if(rad < capat2)
                sum[capat2] += sum[rad] + pond[rad][i];
            else
                sum[capat2] += sum[rad] - pond[rad][i];
            if (capat2 == y)
                return ;
        }
    }
    }
}
int main()
{
    citeste();
    bf(x);
    g<<sum[y];
    f.close();
    g.close();
    return 0;
}