Pagini recente » Cod sursa (job #2330153) | Cod sursa (job #135730) | Cod sursa (job #290300) | Cod sursa (job #2692868) | Cod sursa (job #667949)
Cod sursa(job #667949)
#include<fstream>
#include<vector>
#include<queue>
#define NMAX 30001
#define pb push_back
#define MP make_pair
using namespace std;
ifstream in("sate.in");
ofstream out("sate.out");
int N, M, X, Y, D[NMAX];
vector< pair< int, int > > G[NMAX];
queue< int > Q;
//cu un vector viz iesea din timp pe un test
int BFs()
{
Q.push(X);
while(!Q.empty())
{
int nod = Q.front();
Q.pop();
for(vector<pair< int, int > > :: iterator it = G[nod].begin(); it != G[nod].end(); ++it)
if( D[it -> first] == 0 && (it -> first)!=X ) // am gasit o alta modalitate de a verifica, in loc de vect viz
{
D[it -> first] = D[nod] + it -> second;
Q.push(it -> first);
}
}
return D[Y];
}
int main()
{
int i, x, y, c;
in >> N >> M >> X >> Y;
for(i = 1; i <= M; i++)
{
in >> x >> y >> c;
G[x].pb(MP(y,c));
G[y].pb(MP(x,-c));
}
out << BFs();
}