Cod sursa(job #1788116)

Utilizator danyvsDan Castan danyvs Data 25 octombrie 2016 18:09:52
Problema Sate Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>
#include <algorithm>
#include <queue>

using namespace std;

ifstream fin("sate.in");
ofstream fout("sate.out");

const int NMAX = 301;

int A[NMAX][NMAX], n, m, X, Y, dist;
bool viz[NMAX];

void read()
{
    int i, x, y, d;
    fin >> n >> m >> X >> Y;
    for (i = 1; i <= m; ++ i)
        {
         fin >> x >> y >> d;
         A[x][y] = d;
         A[y][x] = -d;
        }
}

void bfs(int source)
{
    int nod, i;
    queue < int > Q;
    Q.push(source);
    viz[source] = true;
    while (!Q.empty())
        {
         nod = Q.front();
         if (nod == Y)
            {
             fout << dist << "\n";
             exit(EXIT_SUCCESS);
            }
         Q.pop();
         for (i = 1; i <= n; ++ i)
            if (A[nod][i] && !viz[i])
                {
                 dist += A[nod][i];
                 Q.push(i);
                 viz[i] = true;
                }
        }
}

int main()
{
    read();
    fin.close();
    bfs(X);
    fout.close();
    return 0;
}