Pagini recente » Cod sursa (job #3253523) | Borderou de evaluare (job #2448362) | Cod sursa (job #2376854) | Borderou de evaluare (job #2752015) | Cod sursa (job #748368)
Cod sursa(job #748368)
#include <fstream>
#include <vector>
#define NMAX 30011
using namespace std;
vector <pair <int,int> > G[NMAX];
int n,m,X,Y,q[NMAX],dist[NMAX];
void read(){
int i,x,y,c;
ifstream f("sate.in");
f>>n>>m>>X>>Y;
for(i=1;i<=m;i++){
f>>x>>y>>c;
G[x].push_back(make_pair(y,c));
G[y].push_back(make_pair(x,-c));
}
f.close();
}
void solve(){
int i,j,k,nod;
if(X>Y) swap(X,Y);
q[1]=X;
dist[X]=1;
k=1;
for(i=1;i<=k;i++){
nod=q[i];
for(j=0;j<G[nod].size();j++){
if(!dist[G[nod][j].first]){
q[++k]=G[nod][j].first;
dist[G[nod][j].first]=dist[nod]+G[nod][j].second;
if(G[nod][j].first==Y) return;
}
}
}
}
void write(){
ofstream g("sate.out");
g<<dist[Y]-1<<"\n";
g.close();
}
int main(){
read();
solve();
write();
return 0;
}