Pagini recente » Istoria paginii runda/newcomers_1/clasament | Istoria paginii runda/mereuafectatemotional | Cod sursa (job #2101856) | Cod sursa (job #1420005) | Cod sursa (job #606892)
Cod sursa(job #606892)
# include <fstream>
# include <vector>
# include <queue>
using namespace std;
ifstream f ("sate.in");
ofstream g ("sate.out");
vector < pair <int, int> > A[30001];
int n, m, X, Y, x, y, cost, dmin[30001];
queue <int> Q;
char s[50];
int ind;
void BFs (int X)
{
Q.push (X);
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].first])
{
dmin[A[ret][i].first] = dmin[ret] + A[ret][i].second;
Q.push (A[ret][i].first);
}
if (A[ret][i].first == Y)
{
g << dmin[A[ret][i].first] << '\n';
return ;
}
}
}
}
int take_number ()
{
int ret = 0;
while (s[ind] >= '0' && s[ind] <= '9')
ret = ret * 10 + s[ind] - '0', ++ind;
++ind;
return ret;
}
int main ()
{
f.getline (s, 48);
n = take_number ();
m = take_number ();
X = take_number ();
Y = take_number ();
for (int i = 1; i <= m; ++i)
{
f.getline (s, 48);
ind = 0;
x = take_number ();
y = take_number ();
cost = take_number ();
pair <int, int> aaa = make_pair (y, cost);
A[x].push_back (aaa);
aaa = make_pair (x, -cost);
A[y].push_back (aaa);
}
BFs (X);
g.close ();
return 0;
}