Pagini recente » Cod sursa (job #542483) | Cod sursa (job #1166192) | Cod sursa (job #1244678) | Cod sursa (job #726047) | Cod sursa (job #1067259)
#include <fstream>
#include <queue>
#include <vector>
using namespace std;
ifstream fin("sate.in");
ofstream fout("sate.out");
const int nmax= 30000;
struct str {
int x, y;
};
int d[nmax+1];
bool u[nmax+1];
vector <str> v[nmax+1];
inline str mp ( int x, int y ) {
str sol;
sol.x= x;
sol.y= y;
return sol;
}
void bfs( int p ) {
queue <int> q;
q.push(p);
u[p]= 1;
while ( (int)q.size()>0 ) {
int x= q.front();
q.pop();
for ( int i= 0; i<(int)v[x].size(); ++i ) {
if ( u[v[x][i].x]==0 ) {
u[v[x][i].x]= 1;
d[v[x][i].x]= d[x]+v[x][i].y;
q.push(v[x][i].x);
}
}
}
}
int main( ) {
int n, m, x, y;
fin>>n>>m>>x>>y;
for ( ; m>0; --m ) {
int a, b, c;
fin>>a>>b>>c;
v[a].push_back( mp(b, c) );
v[b].push_back( mp(a, -c) );
}
bfs(x);
fout<<d[y]<<"\n";
return 0;
}