Pagini recente » Cod sursa (job #2543788) | Cod sursa (job #1156269) | Cod sursa (job #2032320) | Cod sursa (job #1200388) | Cod sursa (job #2452088)
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
using namespace std;
ifstream f ("sate.in");
ofstream g ("sate.out");
vector < pair <int, int> > muchii[100005];
int distanta[100005];
queue <int> q;
int n,m,x,y;
void bfs()
{
while (!q.empty())
{
int nod=q.front();
q.pop();
for (unsigned int i=0;i<muchii[nod].size();i++)
{
int vecin=muchii[nod].at(i).first;
if (distanta[vecin]==-1)
{
distanta[vecin]=distanta[nod]+muchii[nod].at(i).second;
q.push(vecin);
if(vecin==y)
return;
}
}
}
}
int main()
{
f>>n>>m>>x>>y;
for(int i=1;i<=m;++i)
{
int d, sat1, sat2;
f>>sat1>>sat2>>d;
muchii[sat1].push_back(make_pair(sat2,d));
muchii[sat2].push_back(make_pair(sat1,-d));
}
for (int i=1;i<=n;i++)
{
distanta[i]=-1;
}
distanta[x]=0;
q.push(x);
bfs();
g<<distanta[y];
return 0;
}