Pagini recente » Cod sursa (job #512313) | Cod sursa (job #2357944) | Cod sursa (job #2042376) | Cod sursa (job #1925015) | Cod sursa (job #1259063)
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream fin ("sate.in");
ofstream fout ("sate.out");
int N, M, X, Y, D[30010], fr[30010];
vector < pair < int, int > > V[30010];
queue < int > Q;
int BFS()
{
Q.push(X);
while (!Q.empty())
{
int nod = Q.front();
Q.pop();
fr[nod] = 1;
for (vector < pair < int, int > > :: iterator it = V[nod].begin(); it != V[nod].end(); it++)
{
D[it->first] = D[nod] + it->second;
if (it->first == Y)
{
return D[it->first];
}
if (!fr[it->first])
{
Q.push(it->first);
}
}
}
}
int main()
{
fin >> N >> M >> X >> Y;
for (int k=1, i, j, c; k<=M; k++)
{
fin >> i >> j >> c;
V[i].push_back(make_pair(j, c));
V[j].push_back(make_pair(i, -c));
}
fout << BFS() << '\n';;
fout.close();
return 0;
}