Cod sursa(job #1417554)

Utilizator MpowerGarstea Ion Mpower Data 10 aprilie 2015 15:53:12
Problema Sate Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <iostream>
#include <fstream>
#include <queue>
#include <algorithm>
#define valoare 99999
using namespace std;
int main()
{
    long k,n,m,x,y,i,j,d,*distanta;
    queue <long>q;
    vector <pair<long, long>> *v;
    ifstream f("sate.in");
    ofstream g("sate.out");
    f >> n >> m >> x >>y;
    v=new vector<pair<long,long>>[n+1];
    distanta=new long [n+1];
    for (k=0;k<m;k++)
    {
        f>>i>>j>>d;
        v[i].push_back(make_pair(j, d));
        v[j].push_back(make_pair(i, -d));
    }
    for (i=0;i<n;i++)
    {
        distanta[i]=valoare;
    }
    distanta[x]=0;
    q.push(x);
    while(!q.empty())
    {
        k=q.front();
        q.pop();
        for(vector< pair<long,long > >::iterator i=v[k].begin();i!=v[k].end();i++)
        {
            if (distanta[i->first]==valoare)
            {
                distanta[i->first]=distanta[k]+i->second;
                if (i->first==y)
                {
                    g<<distanta[i->first];
                    return 0;
                }
                q.push(i->first);
            }
        }
    }
}