Pagini recente » Cod sursa (job #2002256) | Cod sursa (job #1663307) | Cod sursa (job #624318) | Cod sursa (job #299468) | Cod sursa (job #524539)
Cod sursa(job #524539)
#include <cstdio>
#include <iostream>
#include <vector>
#include <queue>
#define NMAX 30010
using namespace std;
FILE *f = fopen("sate.in", "r");
FILE *g = fopen("sate.out", "w");
vector< pair<int,int> > v[NMAX];
queue<int> q;
int N, M, X, Y, i, j, d[NMAX], D;
void read(void)
{
fscanf(f, "%d%d%d%d", &N, &M, &X, &Y);
while(M--)
{
fscanf(f, "%d%d%d", &i, &j, &D);
v[i].push_back( make_pair(j, D) );
v[j].push_back( make_pair(i, -D));
}
fclose(f);
}
void solve(void)
{
q.push(X);
d[X] = 1;
while(!q.empty())
{
int nod = q.front();
q.pop();
for(i = 0; i < v[nod].size(); ++i)
{
int adiacNod = v[nod][i].first;
if(!d[adiacNod])
{
q.push(adiacNod);
d[adiacNod] = d[nod] + v[nod][i].second;
if(adiacNod == Y)
{
fprintf(g, "%d", d[Y] - 1);
fclose(g);
return;
}
}
}
}
}
int main(void)
{
read();
solve();
return 0;
}