Pagini recente » Cod sursa (job #2354960) | Cod sursa (job #2813909) | Cod sursa (job #53338) | Cod sursa (job #1906606)
#include<fstream>
#include<vector>
using namespace std;
ifstream fin("pscnv.in");
ofstream fout("pscnv.out");
string sir;
int i, n, k, j,m,a,b,c,st,dr,sol,x,y;
vector <int> lista[1005];
vector <pair<int, short int>> v[250005];
short int d[250005];
int main()
{
fin >> n >> m >> x >> y;
for(i = 1; i <= n; i++)
{
d[i] = 20000;
}
d[x] = 0;
for(i = 1; i <= m; i++)
{
fin >> a >> b >> c;
v[a].push_back(make_pair(b, c));
}
lista[0].push_back(x);
short int i = 0;
while(i <= 1000)
{
int nod;
for(int j = 0; j < lista[i].size(); j++)
{
nod = lista[i][j];
//fout<<nod<<"\n";
if(i == d[nod])
{
//fout << nod<<"\n";
for(int p = 0; p < v[nod].size(); p++)
{
//fout<<v[nod][p].first<<" ";
short cost = max(i, v[nod][p].second);
//fout<<cost<<"\n";
d[v[nod][p].first] = min(d[v[nod][p].first], cost);
if(d[v[nod][p].first] >= cost)
{
d[v[nod][p].first] = cost;
lista[cost].push_back(v[nod][p].first);
}
}
//fout << nod << "\n";
}
}
i++;
}
fout << d[y] << "\n";
}