Pagini recente » Cod sursa (job #3300382) | Cod sursa (job #3300050) | Cod sursa (job #924516) | Cod sursa (job #3255862) | Cod sursa (job #3300133)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream cin("sate.in");
ofstream cout("sate.out");
void cautare(int start);
vector<pair<int, int>> graf[100001];
int dist[100001];
int n, m, inc, sf;
int main()
{
cin>>n>>m>>inc>>sf;
for(int i = 1; i <= m; ++i)
{
int x, y, distanta;
cin>>x>>y>>distanta;
graf[x].push_back({y, distanta});
graf[y].push_back({x, distanta});
}
cautare(inc);
cout<<dist[sf];
return 0;
}
void cautare(int start)
{
queue<int> q;
q.push(start);
while(!q.empty())
{
int nod = q.front();
q.pop();
for(auto i : graf[nod])
{
if(i.first == start || dist[i.first] != 0)
continue;
if(i.first < nod)
dist[i.first] = dist[nod] - i.second;
else
dist[i.first] = dist[nod] + i.second;
q.push(i.first);
}
}
}