Cod sursa(job #2672030)

Utilizator AvramDanielAvram Daniel AvramDaniel Data 12 noiembrie 2020 22:38:07
Problema PScNv Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.3 kb
#include<bits/stdc++.h>
using namespace std;

#define N 250010
#define M 0x3f3f3f

int n,m, dist[N],st,en;
vector<int>v[N];
vector<int>d[N];
bool inheap[N];

struct cmp{
    bool operator() (int i, int j) const{
        return dist[i] > dist[j];
    }
};

priority_queue <int, vector<int>, cmp> q;


int main(){

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

    cin>>n>>m>>st>>en;
    for(int i = 0;i<m;i++){
        int a,b,c;
        cin>>a>>b>>c;
        v[a].push_back(b);
        d[a].push_back(c);
    }

    for(int i = 2;i<=n;i++){
        dist[i] = M;
    }

    q.push(st);
    inheap[st] = 1;
    dist[st] = 0;
    while(!q.empty()){
        int curr = q.top();
        q.pop();
       // afisare();
        //cout<<'\n'<<curr<<": ";
        inheap[curr] = 0;
        for(int i = 0; i<v[curr].size();i++){
            int next = v[curr][i];
            int next_dist = d[curr][i];
            if(dist[next] > max(dist[curr],next_dist)){
                dist[next] =  max(dist[curr],next_dist);
                if(!inheap[next]){
                    inheap[next] = 1;
                    q.push(next);

                }

              //  cout<<next<<' ';
            }
        }
    }
    //cout<<'\n';
    cout<<dist[en];

    return 0;
}