Cod sursa(job #1253066)

Utilizator Pintilie_AndreiFII-Pintilie Andrei Pintilie_Andrei Data 31 octombrie 2014 19:25:59
Problema Sate Scor 0
Compilator cpp Status done
Runda preoji_cl11_12_lspvs Marime 1.14 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#define N 30005
#define oo 200000000
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");
struct str
{
    int nod,cost;
};
vector<str> a[N];
queue <int> q;
int d[N],v[N];

int n,m,start,stop;
void Read()
{
    fin>>n>>m>>start>>stop;
    int i,j,x,y,c;
    str w;
    for(i=1; i<=n; i++)
    {
        fin>>x>>y>>c;
        w.nod=y;
        w.cost=c;
        a[x].push_back(w);
        w.nod=x;
        w.cost=c*-1;
        a[y].push_back(w);

    }

}

void Rez()
{
    int i;
    for(i=2; i<=n; i++)
        d[i]=oo;
        int w;
    q.push(start);

    while(!q.empty())
    {
        w=q.front();
        q.pop();
        v[w]=0;
        for(i=0; i<a[w].size(); i++)
            if(d[a[w][i].nod]> d[w]+a[w][i].cost)
        {
            d[a[w][i].nod]=d[w]+a[w][i].cost;
            if(v[a[w][i].nod]==0)
            {
                q.push(a[w][i].nod);
                v[a[w][i].nod]=1;
            }
        }

    }

    fout<<d[stop];
}

int main()
{
    Read();
    Rez();
    return 0;
}