Pagini recente » Cod sursa (job #2105398) | Cod sursa (job #1245662) | Cod sursa (job #83586) | Cod sursa (job #2237666) | Cod sursa (job #2465673)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
vector <pair<int, int> >a[30001];
queue<int>q;
int n,m,x,y,d[30001],viz[30001];
void citire()
{
f>>n>>m>>x>>y;
int i,j,c;
for(int k=1;k<=m;k++)
{
f>>i>>j>>c;
a[i].push_back({j,c});
a[j].push_back({i,c});
}
}
void bfs(int start)
{ int p,v, c;
q.push(start);
viz[start]=1;
while(!q.empty())
{
p=q.front();q.pop();
for(int 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(v==y)
return;
}
}
}
}
int main()
{
citire();
bfs(x);
g<<d[y];
return 0;
}