Pagini recente » Cod sursa (job #733984) | Cod sursa (job #1287143) | Cod sursa (job #545332) | Cod sursa (job #167057) | Cod sursa (job #3164515)
#include <fstream>
#include <vector>
#include <queue>
#include <bitset>
#define Max 100001
#define vecin first
#define cost second
using namespace std;
ifstream fin ("sate.in");
ofstream fout("sate.out");
vector <pair<int,int>> graf[Max];
bitset <Max> v;
queue <int> q;
int n, m, x, y, d[Max];
void read()
{
fin >> n >> m >> x >> y;
if (x > y)
swap (x, y);
int z1, z2, z3;
for (int i = 1 ; i <= m ; ++i)
{
fin >> z1 >> z2 >> z3;
graf[z1].push_back({z2, z3});
graf[z2].push_back({z1,-z3});
}
}
void bfs (int nod)
{
q.push(nod);
v[nod] = 1;
d[nod] = 0;
while (!q.empty())
{
nod = q.front();
q.pop();
for (auto i : graf[nod])
if (!v[i.vecin])
{
v[i.vecin] = 1;
d[i.vecin] = d[nod] + i.cost;
q.push(i.vecin);
}
}
}
int main()
{
read();
bfs(x);
fout << d[y];
fin.close();
fout.close();
return 0;
}