Cod sursa(job #2037447)

Utilizator Johnny07Savu Ioan-Daniel Johnny07 Data 12 octombrie 2017 11:20:22
Problema Sate Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");

int n,m,start,stop,i;

int q[30010];
int dim[300010],cost[30010];

struct st
{
    int nod,cost;
};

vector <st> vec[30010];


void BFS(int nod)
{
int lim=1;
q[lim]=nod;
cost[nod]=0;
int i,j;
for (i=1;i<=lim;i++)
{
    for (j=0;j<dim[q[i]];j++)
    {
        if (cost [vec[q[i]][j].nod]==-1)
        {
            lim++;
            q[lim]=vec[q[i]][j].nod;
            if(q[lim]>q[i]) cost[q[lim]]=cost[q[i]]+vec[q[i]][j].cost;
            else cost[q[lim]]=cost[q[i]]-vec[q[i]][j].cost;
        }
    }
}
}

int main()
{
   st aux;
   int x,y,cst;
f>>n>>m>>start>>stop;
for (i=1;i<=m;i++)
{
    f>>x>>y>>cst;
    aux.nod=y;
    aux.cost=cst;
    vec[x].push_back(aux);
    aux.nod=x;
    vec[y].push_back(aux);
}
for (i=1;i<=n;i++)
{
    dim[i]=vec[i].size();
    cost[i]=-1;
}

BFS(start);
g<<cost[stop];


    return 0;
}