Pagini recente » Cod sursa (job #232018) | Cod sursa (job #2512902) | Cod sursa (job #2280637) | Cod sursa (job #1542699) | Cod sursa (job #2465679)
#include <iostream>
#include <vector>
#include <fstream>
#include <queue>
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
long long n,m,x,y,viz[30001],d[30001];
vector <pair <int,int> > a[30001];
queue <int> q;
void citire()
{
int i,j,k,c;
f>>n>>m>>x>>y;
for(k=0;k<m;k++)
{
f>>i>>j>>c;
a[i].push_back({j,c});
a[j].push_back({i,c});
}
}
int bfs(int i)
{
int p,j,c,v;
viz[i]=0;
q.push(i);
while(q.size()!=0)
{
p=q.front();
for(j=0;j<a[p].size();j++)
{
v=a[p][j].first;
c=a[p][j].second;
if(viz[v]==0)
{
q.push(v);
viz[v]=1;
if(p>v)
d[v]=d[p]-c;
else
d[v]=d[p]+c;
}
if(viz[y]==1)
break;
}
q.pop();
if(viz[y]==1)
break;
}
}
int main()
{
citire();
bfs(x);
g<<d[y];
return 0;
}