Cod sursa(job #1915014)

Utilizator DysKodeTurturica Razvan DysKode Data 8 martie 2017 19:20:13
Problema PScNv Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <list>
#include <fstream>

using namespace std;

#define f first
#define s second

ifstream fin("pscnv.in");
ofstream fout("pscnv.out");

int a,b,c,d,fv[500010],ans,x,y,ls,ld,mij,n,m,i;
list< pair<int,int> > G[500010];

void DF( int nod )
{
    fv[ nod / 32 ] += 1 << ( nod % 32 );
    for( auto it : G[ nod ] )
        if( it.s <= mij && fv[ it.f ] ^ ( 1 << ( it.f % 32 ) ) )
            DF( it.f );
}

int main()
{
    fin>>n>>m>>a>>b;
    for( i = 1 ; i <= m ; i++ )
    {
        fin>>x>>y>>c;
        G[ x ].push_back( { y , c } );
    }
    ls = 1;
    ld = 1000;
    while( ls <= ld )
    {
        mij = ls + ( ld - ls ) / 2;
        for( i = 0 ; i <= n / 32 + 2 ; i++ )
            fv[ i ] = 0;
        DF( a );
        if( fv[ b / 32 ] & ( 1 << ( b % 32 ) ) )
        {
            ld = mij - 1;
            ans = mij;
        }
        else
        {
            ls = mij + 1;
        }
    }
    fout<<ans;


return 0;
}