Pagini recente » Cod sursa (job #3296696) | Cod sursa (job #3217610) | Cod sursa (job #922822) | Monitorul de evaluare | Cod sursa (job #3300122)
#include <iostream>
#include <fstream>
#include <climits>
#include <deque>
using namespace std;
ifstream f("bfs.in");
ofstream g("bfs.out");
struct leg{
int to, dist;
};
int main()
{
int n, m, start, end;
f >> n >> m >> start >> end;
vector<leg> adj[n+1];
int ans[n+1];
deque<int> d;
for( int i = 1; i <= n; ++i )
{
ans[i] = INT_MAX;
}
for( int i = 1; i <= m; ++i )
{
int x, y, dist;
f >> x >> y >> dist;
leg a;
a.to = y;
a.dist = dist;
adj[x].push_back(a);
a.to = x;
adj[y].push_back(a);
}
d.push_front(start);
ans[start] = 0;
while( d.empty() == false )
{
int parinte = d.back();
d.pop_back();
for( auto copil : adj[parinte] )
{
int D = copil.dist;
if( copil.to < parinte )
D = -D;
if( ans[copil.to] > ans[parinte] + D )
{
ans[copil.to] = ans[parinte] + D;
d.push_front( copil.to );
}
}
}
g << ans[end];
return 0;
}