Pagini recente » Cod sursa (job #1168632) | Cod sursa (job #312033) | Cod sursa (job #2551043) | Cod sursa (job #2159741) | Cod sursa (job #3201780)
#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(val[t[0][man]]==0)
{
dr++;
c1[dr]=t[0][man];
if(c1[dr]>c1[st])
val[c1[dr]]=t[2][man]+val[c1[st]];
else
val[t[0][man]]=max(t[2][man]-val[c1[st]],val[c1[st]]-t[2][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]-val[x];
return 0;
}