Cod sursa(job #1142693)

Utilizator classiusCobuz Andrei classius Data 14 martie 2014 08:19:59
Problema PScNv Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
using namespace std;

#include<fstream>
#include<vector>
#include<utility>
#include<map>
#include<cstring>
#include<queue>

ifstream cin("pscnv.in");
ofstream cout("pscnv.out");

const int MAXN=300000;
vector<pair<int,int> > v[MAXN];
bool ok[MAXN];

int main(){

    int n,m,x,y;

    cin>>n>>m>>x>>y;

    for(int i=1;i<=m;i++){
        int x,y,ps;

        cin>>x>>y>>ps;

        if(x==y){
            continue;
        }

        v[x].push_back(make_pair(y,ps));
    }

    int lf=0,rt=1000;

    while(lf<rt){
        int mid=(lf+rt)/2;
        memset(ok,0,sizeof(ok));
        queue<int> q;

        ok[x]=1;
        q.push(x);

        while(!q.empty()){
            int i=q.front();
            q.pop();

            for(unsigned j=0;j<v[i].size();j++){
                int u=v[i][j].first;
                int cs=v[i][j].second;

                if(!ok[u] && mid>=cs){
                    ok[u]=1;
                    q.push(u);
                }
            }
        }

        if(ok[y]){
            rt=mid;
        }else{
            lf=mid+1;
        }
    }

    cout<<lf;

    return 0;
}