Pagini recente » Cod sursa (job #680446) | Cod sursa (job #313288) | Cod sursa (job #396153) | Cod sursa (job #3173230) | Cod sursa (job #674135)
Cod sursa(job #674135)
#include <fstream>
#include <vector>
#define NMAx 30100
#define ff first
#define ss second
#define pb push_back
#define mp make_pair
using namespace std;
vector <pair <int,int> > G[NMAx];
int n,nr,X,Y,dist[NMAx],deque[NMAx];
void citire() {
int i,m,x,y,c;
ifstream in("sate.in");
in>>n>>m>>X>>Y;
for(i=0;i<m;i++)
{in>>x>>y>>c;
G[x].pb(mp(y,c));
G[y].pb(mp(x,-c));
}
in.close();
}
void BFS() {
int i,j,nod;
if(X>Y)
swap(X,Y);
deque[1]=X;
dist[X]=1;
nr=1;
for(i=1;i<=nr;i++) {
nod=deque[i];
for(j=0;j<G[nod].size();j++)
if(!dist[G[nod][j].ff]) {
deque[++nr]=G[nod][j].ff;
dist[G[nod][j].ff]=dist[nod]+G[nod][j].ss;
if(G[nod][j].ff==Y)
return;
}
}
}
int main()
{
citire();
BFS();
ofstream out("sate.out");
out<<(dist[Y]-1)<<'\n';
out.close();
return 0;
}