Pagini recente » Cod sursa (job #2739588) | Borderou de evaluare (job #1566268) | Cod sursa (job #479471) | Cod sursa (job #485772) | Cod sursa (job #1142701)
using namespace std;
#include<fstream>
#include<vector>
#include<utility>
#include<cstring>
#include<queue>
ifstream cin("pscnv.in");
ofstream cout("pscnv.out");
const int MAXN=300000;
vector<pair<int,int> > v[MAXN];
int ds[MAXN];
struct cmp{
bool operator()(const pair<int,int>& p1,const pair<int,int>& p2){
return p1.second>p2.second;
}
};
int main(){
int n,m,x,y;
cin>>n>>m>>x>>y;
cin.ignore();
for(int i=1;i<=m;i++){
int x,y,ps;
char a[100];
x=y=ps=0;
cin.getline(a,100);
unsigned j=0;
while(a[j]!=' '){
x=x*10+a[j]-'0';
j++;
}
j++;
while(a[j]!=' '){
y=y*10+a[j]-'0';
j++;
}
j++;
while(j<strlen(a)){
ps=ps*10+a[j]-'0';
j++;
}
if(x==y){
continue;
}
v[x].push_back(make_pair(y,ps));
}
for(int i=1;i<=n;i++){
ds[i]=1<<30;
}
priority_queue <pair<int,int>, vector<pair<int,int> >, cmp> pq;
ds[x]=0;
pq.push(make_pair(x,0));
while(!pq.empty()){
int i=pq.top().first;
int pd=pq.top().second;
pq.pop();
for(unsigned j=0;j<v[i].size();j++){
int u=v[i][j].first;
int ps=v[i][j].second;
if(ds[u]>max(ps,pd)){
ds[u]=max(ps,pd);
pq.push(make_pair(u,ds[u]));
}
}
}
cout<<ds[y];
return 0;
}