DontCallMeNuttoPleas

Maraton

Apr 11th, 2020
208
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.25 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. using lli=long long;
  4. using pii=pair<lli,lli>;
  5. using pipii=pair<lli,pii>;
  6. vector<pipii> way[100100];
  7. pii shoe[100100];
  8. int n,m,k,t;
  9. bool check(lli num){
  10.     priority_queue<pii,vector<pii>,greater<pii>> pq;
  11.     vector<bool> visited(n+1,false);
  12.     vector<lli> dis(n+1,2e9);
  13.     dis[1]=0;
  14.     pq.push({0,1});
  15.     while(!pq.empty()){
  16.         int u=pq.top().second;
  17.         pq.pop();
  18.         if(visited[u]) continue;
  19.         visited[u];
  20.         for(auto x:way[u]){
  21.             lli w=x.first,v=x.second.first,d=x.second.second;
  22.             if(num>=d&&!visited[v]&&dis[v]>dis[u]+w){
  23.                 dis[v]=dis[u]+w;
  24.                 pq.push({dis[v],v});
  25.             }
  26.         }
  27.     }
  28.     if(dis[n]>t) return false;
  29.     return true;
  30. }
  31.  
  32. int main(){
  33.     scanf("%d%d%d%d",&n,&m,&k,&t);
  34.     for(int i=0;i<m;i++){
  35.         int u,v,d,w;
  36.         scanf("%d%d%d%d",&u,&v,&d,&w);
  37.         way[u].push_back({w,{v,d}});
  38.         way[v].push_back({w,{u,d}});
  39.     }
  40.     for(int i=0;i<k;i++){
  41.         int u,v;
  42.         scanf("%d%d",&u,&v);
  43.         shoe[i]={v,u};
  44.     }
  45.     sort(shoe,shoe+k);
  46.     lli l=0,r=k-1;
  47.     lli mn=2e18;
  48.     while(l<=r){
  49.         lli mid=(l+r)/2;
  50.         if(check(shoe[mid].first)){
  51.             mn=mid;
  52.             r=mid-1;
  53.         }else{
  54.             l=mid+1;
  55.         }
  56.     }
  57.     lli ans=2e9;
  58.     if(mn==2e18) printf("-1");
  59.     else{
  60.         for(int i=mn;i<k;i++){
  61.             ans=min(ans,shoe[i].second);
  62.         }
  63.         printf("%d",ans);
  64.     }
  65. }
Advertisement
Add Comment
Please, Sign In to add comment