Pagini recente » Cod sursa (job #2689173) | Cod sursa (job #2696694) | Cod sursa (job #2861973) | Cod sursa (job #1643594) | Cod sursa (job #2037452)
#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;
if (q[lim]==stop) {lim=0;break;}
}
}
}
}
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;
}