Pagini recente » Cod sursa (job #1579779) | Cod sursa (job #3150631) | Cod sursa (job #1807917) | Cod sursa (job #2545518) | Cod sursa (job #1338)
Cod sursa(job #1338)
#include <cstdio>
#include <vector>
using namespace std;
const int MAXN = 250001;
int N, M, d[MAXN], S, D;
vector<int> cst[1001];
vector< pair<int, int> > con[MAXN];
int main()
{
freopen("pscnv.in", "rt", stdin);
freopen("pscnv.out", "wt", stdout);
int i, j, k;
for (scanf("%d %d %d %d", &N, &M, &S, &D); M; M--)
scanf("%d %d %d", &i, &j, &k),
con[i].push_back( make_pair(j, k) );
memset(d, 0x3f, sizeof(d));
d[S] = 0;
cst[0].push_back(S);
vector< pair<int, int> > :: iterator it;
for (i = 0; i <= 1000; i++)
for (j = 0; j < cst[i].size(); j++)
{
k = cst[i][j];
if (d[k] != i) continue;
for (it = con[k].begin(); it != con[k].end(); it++)
if ((*it).second > i)
if ((*it).second < d[(*it).first])
cst[(*it).second].push_back((*it).first),
d[(*it).first] = (*it).second;
else;
else
if (i < d[(*it).first])
cst[i].push_back((*it).first),
d[(*it).first] = i;
}
printf("%d\n", d[D]);
return 0;
}