Pagini recente » Cod sursa (job #2155670) | Cod sursa (job #1316649) | Cod sursa (job #170709) | Cod sursa (job #1185734) | Cod sursa (job #2798388)
#include<fstream>
#include<vector>
#include<queue>
using namespace std;
ifstream cin("sate.in");
ofstream cout("sate.out");
vector<pair<int, int>> v[30001];
bool viz[30001];
int dist[30001];
deque<int> coada;
int bfs(int x, int y)
{
coada.push_back(x);
viz[x] = true;
while(coada.size())
{
int nr = coada.front();
coada.pop_front();
int lim = v[nr].size();
for(int i=0; i<lim; i++)
{
int vecin = v[nr][i].first;
int cost = v[nr][i].second;
if(viz[vecin] == false)
{
viz[vecin] = true;
if(vecin > nr)
dist[vecin] = dist[nr] + cost;
else
dist[vecin] = dist[nr] - cost;
coada.push_back(vecin);
}
}
}
return dist[y];
}
int main()
{
int n, m, x, y;
cin>>n>>m>>x>>y;
for(int i=1; i<=m; i++)
{
int a, b, d;
cin>>a>>b>>d;
v[a].push_back({b, d});
v[b].push_back({a, d});
}
cout<<bfs(x, y);
return 0;
}