Pagini recente » Cod sursa (job #558056) | Cod sursa (job #2106489) | Cod sursa (job #397265) | Cod sursa (job #1297294) | Cod sursa (job #1334966)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream cin("sate.in");
ofstream cout("sate.out");
#define nmax 30010
#define pii pair<int,int>
int n,m,x,y,c,viz[nmax],d[nmax],v[nmax],nod1,nod2;
vector<pii> g[nmax];
queue<int> q;
int modul(int a)
{
if (a>0) return a;
return -a;
}
void bfs(int st)
{
int nod,vecin,cost;
vector<pii>::iterator it;
q.push(st);
v[st]=1;
viz[st]=1;
while (!q.empty())
{
nod=q.front();
viz[nod]=1;
q.pop();
for (it=g[nod].begin();it!=g[nod].end();it++)
{
vecin=(*it).first;
cost=(*it).second;
if (!viz[vecin])
{
if (!v[vecin])
{
if (vecin<nod)
v[vecin]=v[nod]-cost;
else
v[vecin]=v[nod]+cost;
}
q.push(vecin);
}
}
}
}
int main()
{
int i,j;
cin>>n>>m>>nod1>>nod2;
for (i=1;i<=m;i++)
{
cin>>x>>y>>c;
g[x].push_back(make_pair(y,c));
g[y].push_back(make_pair(x,c));
}
for (i=1;i<=n;i++)
if (!viz[i])
bfs(i);
cout<<modul(v[nod1]-v[nod2]);
}