Cod sursa(job #1071173)

Utilizator marta_diannaFII Filimon Marta Diana marta_dianna Data 2 ianuarie 2014 17:55:52
Problema Sate Scor 80
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2013 Marime 1.03 kb
#include<fstream>
#include<vector>
#include<utility>
#include<queue>
#define NMAX 30010
#define f first
#define s second

using namespace std;

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

vector<pair<int, long long> > a[NMAX];
queue<int> q;

long long D[NMAX];
int n, m, X, Y, vz[NMAX];

void Citeste()
{
    int x, y, i;
    long long z;

    f>>n>>m>>X>>Y;

    for (i=1; i<=m; ++i)
    {
        f>>x>>y>>z;
        a[x].push_back(make_pair(y, z));
        a[y].push_back(make_pair(x, z*(-1)));
    }
}

void BFS()
{
    int i, nod;
    pair<int, int> pr;

    vz[X]=1; q.push(X);

    while (!q.empty())
    {
        nod=q.front(); q.pop();

        for (i=0; i<a[nod].size(); ++i)
        {
            pr=a[nod][i];

            if (!vz[pr.f])
            {
                D[pr.f]=D[nod]+pr.s;
                vz[pr.f]=1; q.push(pr.f);
            }
        }
    }
}

int main()
{
    Citeste();

    BFS();

    g<<D[Y]<<"\n";

    f.close();
    g.close();
    return 0;
}