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