Pagini recente » Cod sursa (job #1081867) | Cod sursa (job #2877483) | Cod sursa (job #1210924) | Cod sursa (job #3245893) | Cod sursa (job #1284835)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("pscnv.in");
ofstream fout("pscnv.out");
#define MAX 250010
vector <pair<int, int> > G[MAX];
vector <int> q[1001];
typedef vector <pair <int, int> > :: iterator iter;
int n, m, xs, xe, x, y, c;
int k, viz[MAX], nod;
int main()
{
fin >> n >> m;
fin >> xs >> xe;
while(m--)
{
fin >> x >> y >> c;
G[x].push_back(make_pair(y, c));
}
q[0].push_back(xs);
k = -1;
while(!viz[xe])
{
k++;
while(q[k].size())
{
nod = q[k][q[k].size() - 1];
q[k].pop_back();
if(viz[nod])
continue;
viz[nod] = 1;
for(iter it = G[nod].begin() ; it != G[nod].end() ; it++)
{
if(!viz[it->first])
{
if(it->second <= k)
{
q[k].push_back(it->first);
}
else
{
q[it->second].push_back(it->first);
}
}
}
if(viz[xe])
break;
}
}
fout << k << "\n";
}