Cod sursa(job #2149498)

Utilizator catalinlupCatalin Lupau catalinlup Data 2 martie 2018 18:00:06
Problema PScNv Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <bits/stdc++.h>
#define INFILE "pscnv.in"
#define OUTFILE "pscnv.out"
using namespace std;
typedef pair<int,int> arc;

ifstream in(INFILE);
ofstream out(OUTFILE);
const int NMAX=250000;
array<int,NMAX> d;
int n,m,x,y;
struct Graf{
    int n;
    vector<vector<arc>> Adj;
    void Init(int n){
      this->n=n;
      Adj.resize(n+1);
    }
    void Add(int x,int y,int k){
      Adj[x].push_back({y,k});
    }
}G;
void Read1(){
  in>>n>>m>>x>>y;
  G.Init(n);
  for(int i=1;i<=m;i++){
    int a,b,k;
    in>>a>>b>>k;
    //cout<<a<<" "<<b<<" "<<k<<"\n";
    G.Add(a,b,k);
  }
}

int Dijkstra(){
  typedef pair<int,int> celm;
  priority_queue<celm,vector<celm>,greater<celm>> coada;
  coada.push({0,x});
  for(int i=1;i<=n;i++)
    d[i]=INT_MAX;
  d[x]=0;
  while(!coada.empty()){
    celm n=coada.top();
    coada.pop();
    for(auto arc:G.Adj[n.second]){
      int nu=arc.first;
      int cu=arc.second;
      int mx=max(n.first,cu);
      if(mx<d[nu]){
        d[nu]=mx;
        coada.push({mx,nu});
      }
    }
  }
  return d[y];
}

int main(){
  Read1();
  out<<Dijkstra();
  return 0;
}