Pagini recente » Cod sursa (job #194802) | Cod sursa (job #2318010) | Cod sursa (job #1047117) | Cod sursa (job #2374278) | Cod sursa (job #3201995)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
int n,m,x,y,a,b,c; int val[30001];
int t[3][2*100025],start[2*100025],viz[30001];
void bfs(int x1)
{
int st,dr;
int c1[30001];
st=dr=1;
c1[st]=x1;
while(st<=dr)
{
int k=c1[st];
int man=start[k];
while(man)
{
if(viz[t[0][man]]==0)
{
if(t[0][man]>c1[st])
val[t[0][man]]=t[2][man]+val[c1[st]];
else
val[t[0][man]]=val[c1[st]]-t[2][man];
dr++;
c1[dr]=t[0][man];
viz[t[0][man]];
}
man=t[1][man];
}
st++;
}
}
int main()
{
f>>n>>m>>x>>y;
int k=0;
for(int i=1;i<=m;i++)
{
f>>a>>b>>c;
k++;
t[0][k]=b;
t[1][k]=start[a];
t[2][k]=c;
start[a]=k;
k++;
t[0][k]=a;
t[1][k]=start[b];
t[2][k]=c;
start[b]=k;
}
bfs(x);
g<<val[y];
return 0;
}