Cod sursa(job #2265907)

Utilizator alex.carpCarp Alexandru alex.carp Data 21 octombrie 2018 21:27:56
Problema PScNv Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.4 kb
#include <fstream>

using namespace std;

ifstream f("pscnv.in");
ofstream g("pscnv.out");
struct
{
    int nod,poz_urm;
    short cost;
}v[750002];
int t,n,m,x,y;
void adarc(int a,int b,int c)
{
    int ultim_poz[250002];
    if(v[a].poz_urm==0){v[a].poz_urm=t;v[t].nod=b;v[t].cost=c;ultim_poz[a]=t;}
    else
    {
        v[ultim_poz[a]].poz_urm=t;
        v[t].nod=b;
        v[t].cost=c;
        ultim_poz[a]=t;
    }
    t++;
}
void parcurgere(int a,int b)
{ int prim,ultim,q[250002],crt;
short cost_min_nod[250002];
bool vizitat[250002];
    prim=ultim=1;
    q[prim]=a;
    cost_min_nod[a]=0;vizitat[a]=1;
    while(prim<=ultim)
    {
        crt=v[q[prim]].poz_urm;
        while(crt!=0)
        {
            if(vizitat[v[crt].nod]==0 || max(cost_min_nod[q[prim]],v[crt].cost)<cost_min_nod[v[crt].nod])
            {
                cost_min_nod[v[crt].nod]=max(cost_min_nod[q[prim]],v[crt].cost);
                vizitat[v[crt].nod]=1;
                ultim++;
                q[ultim]=v[crt].nod;
            }
            crt=v[crt].poz_urm;
        }
        prim++;
    }
        g<<cost_min_nod[y];
}
int main()
{f>>n>>m>>x>>y;
int i,a,b,c;
for(t=1;t<=n;t++)
    v[t].nod=t;
for(i=1;i<=m;i++)
{
    f>>a>>b>>c;
    adarc(a,b,c);
}
parcurgere(x,y);
//for(i=1;i<=n+m;i++)
  //  g<<v[i].nod<<" "<<v[i].poz_urm<<" "<<v[i].cost<<'\n';

    return 0;
}