Pagini recente » Cod sursa (job #129559) | Cod sursa (job #2530098) | Cod sursa (job #1294771) | Cod sursa (job #793838) | Cod sursa (job #2450744)
#include <fstream>
#include <queue>
#include <vector>
#define NMAX 30010
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
int n, x, y, m, dist[NMAX];
vector < pair <int,int> > v[NMAX];
int BFS(int start, int finish)
{
queue <int> Q;
if(start == finish) return 0;
Q.push(start);
while(!Q.empty() && !dist[finish])
{
int nod = Q.front();
Q.pop();
/*
*/
for(int i = 0; i < v[nod].size(); ++i)
if(dist[v[nod][i].first] == 0 && (v[nod][i].first != start) )
{
dist[v[nod][i].first] = dist[nod] + v[nod][i].second;
Q.push(v[nod][i].first);
}
}
return dist[finish];
}
int main()
{
f >> n >> m >> x >> y;
for(int i = 1; i <= m; ++i)
{
int a, b, cost;
f >> a >> b >> cost;
v[a].push_back({b,cost});
v[b].push_back({a,-cost});
}
g << BFS(x,y);
f.close(); g.close();
return 0;
}