Cod sursa(job #1906606)

Utilizator raulmuresanRaul Muresan raulmuresan Data 6 martie 2017 15:16:36
Problema PScNv Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.43 kb
#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";

}