Pagini recente » Cod sursa (job #2280690) | Cod sursa (job #2405731) | Cod sursa (job #315512) | Cod sursa (job #1742372) | Cod sursa (job #2149498)
#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;
}