Cod sursa(job #998789)

Utilizator manutrutaEmanuel Truta manutruta Data 18 septembrie 2013 00:11:46
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
# include <iostream>
# include <fstream>
# include <algorithm>
# include <vector>
# include <bitset>
# include <queue>
using namespace std;

# define MAXN 30010
# define MAXM 100034
typedef vector< pair<int, int> > :: iterator iter;

ifstream f("sate.in");
ofstream g("sate.out");

int n, m, x, y;
vector< pair<int, int> > G[MAXN];
bitset<MAXN> viznod;
queue<int> coada;
int dist[MAXN] = {0};

void bfs()
{
    viznod[x] = true;
    dist[x] = 0;
    coada.push(x);
    while (!coada.empty()) {
        int nd = coada.front();
        coada.pop();

        for (iter it = G[nd].begin(); it != G[nd].end(); it++) {
            if (viznod[it->first] == false) {
                viznod[it->first] = true;
                coada.push(it->first);
                dist[it->first] = dist[nd] + it->second;
            }
        }

        if (dist[y] != 0) {
            g << abs(dist[y]);
            return;
        }
    }
}

int main()
{
    f >> n >> m >> x >> y;
    for (int l = 1; l <= m; l++) {
        int i, j, d;
        f >> i >> j >> d;
        G[i].push_back(make_pair(j, d));
        G[j].push_back(make_pair(i, -d));
    }

    bfs();

    return 0;
}