Pagini recente » Cod sursa (job #2923724) | Cod sursa (job #2476180) | Cod sursa (job #146759) | Cod sursa (job #690288) | Cod sursa (job #606860)
Cod sursa(job #606860)
# include <fstream>
# include <vector>
# include <queue>
using namespace std;
ifstream f ("sate.in");
ofstream g ("sate.out");
vector <int> A[30100], B[30100];
int n, m, X, Y, x, y, cost, dmin[30100];
queue <int> Q;
void BFs (int X)
{
Q.push (X);
for (int i = 1; i <= n; ++i) dmin[i] = -1;
dmin[X] = 0;
for (; !Q.empty (); Q.pop ())
{
int ret = Q.front (), siz = A[ret].size ();
for (int i = 0; i < siz; ++i)
{
if (dmin[A[ret][i]] < 0)
{
dmin[A[ret][i]] = dmin[ret] + B[ret][i];
Q.push (A[ret][i]);
}
if (A[ret][i] == Y)
{
g << dmin[A[ret][i]] << '\n';
return ;
}
}
}
}
int main ()
{
f >> n >> m >> X >> Y;
for (int i = 1; i <= m; ++i)
{
f >> x >> y >> cost;
A[x].push_back (y);
B[x].push_back (cost);
A[y].push_back (x);
B[y].push_back (cost * (-1));
}
BFs (X);
}