Pagini recente » Cod sursa (job #2788121) | Cod sursa (job #2913857) | Cod sursa (job #1807857) | Cod sursa (job #219288) | Cod sursa (job #796726)
Cod sursa(job #796726)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");
bool visited[30001];
vector<pair<int, int> >g[30001];
queue<int> q;
int c[30001], n, m, x, y, n1, n2, cost;
int Solve(int node, int destination)
{
int current = node;
q.push(current);
while ( !q.empty())
{
current = q.front();
for ( size_t i = 0; i < g[current].size(); i++ )
{
if ( !visited[g[current][i].first] )
{
visited[g[current][i].first] = 1;
q.push(g[current][i].first);
c[g[current][i].first] = c[current]+g[current][i].second;
if ( g[current][i].first == destination )
{
return c[g[current][i].first];
}
}
}
q.pop();
}
}
int main()
{
fin >> n >> m >> x >> y;
for ( int i = 1; i <= n; i++ )
{
fin >> n1 >> n2 >> cost;
g[n1].push_back(make_pair(n2,cost));
g[n2].push_back(make_pair(n1,-cost));
}
fout << Solve(x,y);
return 0;
}