Pagini recente » Cod sursa (job #1255325) | Cod sursa (job #3243083) | Cod sursa (job #1281506) | Cod sursa (job #1893611) | Cod sursa (job #1576114)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");
const int N=30001;
const int M=100025;
int lst[N],vf[2*M],urm[2*M],c[2*M],q[N],nr;
int inter[N];
bool viz[N];
void adauga(int x,int y,int cost)
{
nr++;
vf[nr]=y;
urm[nr]=lst[x];
c[nr]=cost;
lst[x]=nr;
}
int main()
{
int n,m,x,y,cost,i,X,Y;
fin>>n>>m>>X>>Y;
for(i=1;i<=m;i++)
{
fin>>x>>y>>cost;
adauga(x,y,cost);
adauga(y,x,cost);
}
//BFS
int p=0,u=1;
q[++p]=X;
viz[X]=1;
while(p<=u)
{
x=q[p];
i=lst[x];
while(i!=0)
{
y=vf[i];
if(!viz[y])
{
q[++u]=y;
viz[y]=1;
if(x<y) inter[y]=inter[x]+c[i];
if(x>y) inter[y]=inter[x]-c[i];
}
i=urm[i];
}
p++;
}
fout<<inter[Y];
}