Pagini recente » Cod sursa (job #266464) | Cod sursa (job #2282557) | Cod sursa (job #384390) | Cod sursa (job #2176689) | Cod sursa (job #1016468)
#include <fstream>
#include <queue>
#include <vector>
#define Nmax 30099
#define Mmax 100099
#define Inf 999999999
#define mp make_pair
#define pb push_back
#define x first
#define c second
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
int N,M,X,Y,d[Nmax],viz[Nmax];
vector < pair < int ,int> > Graph[Nmax];
queue < int > Q;
inline void ReadInput()
{
f>>N>>M>>X>>Y;
for(int i=1;i<=M;++i)
{
int x,y,c;
f>>x>>y>>c;
Graph[x].pb(mp(y,c));
Graph[y].pb(mp(x,-c));
}
}
void BFS(int sursa)
{
Q.push(X);
for(; !Q.empty();Q.pop())
{
int nod=Q.front();
vector < pair < int ,int> >::iterator it;
for(it=Graph[nod].begin();it!=Graph[nod].end();++it)
if(!viz[it->x])
{
d[it->x]=d[nod]+it->c;
viz[it->x]=1;
Q.push(it->x);
}
}
}
int main()
{
ReadInput();
BFS(X);
g<<d[Y]<<'\n';
f.close();g.close();
return 0;
}