Pagini recente » Cod sursa (job #2520433) | Cod sursa (job #1429794) | Cod sursa (job #2649834) | Cod sursa (job #2822682) | Cod sursa (job #2290722)
#include <bits/stdc++.h>
#define Nmax 30005
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");
vector < pair<int, int> > mat[Nmax];
queue < pair<int, int> > coada;
int n,m,x,y,d[Nmax],viz[Nmax];
int parc(int vf)
{
int i;
viz[vf]=1;
coada.push(make_pair(vf,0));
while(!coada.empty())
{
vf=coada.front().first;
coada.pop();
if(vf==y)
return d[vf];
for(i=0;i<mat[vf].size();i++)
{
if(!viz[mat[vf][i].first])
{
viz[mat[vf][i].first]=1;
if(mat[vf][i].first>vf)
d[mat[vf][i].first]=d[vf]+mat[vf][i].second;
else
d[mat[vf][i].first]=d[vf]-mat[vf][i].second;
coada.push(make_pair(mat[vf][i].first,d[mat[vf][i].first]));
}
}
}
}
int main()
{
int i,a,b,c;
fin>>n>>m>>x>>y;
for(i=1;i<=m;i++)
{
fin>>a>>b>>c;
mat[a].push_back(make_pair(b,c));
mat[b].push_back(make_pair(a,c));
}
fout<<parc(x);
return 0;
}