Pagini recente » Cod sursa (job #1813270) | Borderou de evaluare (job #1650359) | Cod sursa (job #466338) | Cod sursa (job #326251) | Cod sursa (job #3131810)
#include <fstream>
#include <queue>
using namespace std;
ifstream in("sate.in");
ofstream out("sate.out");
int n, m, x, y;
vector<pair<int, int>> v[30005];
int viz[30005], ans[30005];
queue<int> q;
int main()
{
in>>n>>m>>x>>y;
int st, dr, d;
for(int i = 1; i<=m; i++)
{
in>>st>>dr>>d;
v[st].push_back({dr, d});
v[dr].push_back({st, -d});
}
if(x > y)
{
swap(x, y);
}
viz[x] = 1;
q.push(x);
int nod;
while(!q.empty())
{
nod = q.front();
viz[nod] = 1;
for(auto i: v[nod])
{
if(viz[i.first] == 0)
{
ans[i.first] = ans[nod] + i.second;
q.push(i.first);
}
}
q.pop();
}
out<<ans[y];
return 0;
}