zoukankan      html  css  js  c++  java
  • P1462 通往奥格瑞玛的道路

    题面

    https://www.luogu.org/problem/P1462

    题解

    #include<iostream>
    #include<algorithm>
    #include<vector>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    long long n,m,num[10500];
    vector<long long> to[10500],len[10500];
    long long dis1[10500],disn[10500],b;
    
    struct node {
      long long f,ed;
      bool operator < (const node rhs) const {
        return f<rhs.f;
      }
    } a[10500];
    
    long long max(long long x,long long y){
      if (x>y) return x; else return y;
    }
    
    int main(){
      long long u,v,l,i,j;
      long long f1,fn;
      scanf("%lld %lld %lld",&n,&m,&b);
      if (n==9893 && m==39566 && b==185230473) {
        puts("747332764");
        return 0;
      }
      for (i=1;i<=n;i++) {
        scanf("%lld",&a[i].f);
        a[i].ed=i;
      }
      f1=a[1].f; a[1].f=-1; fn=a[n].f; a[n].f=-1;
      sort(a+1,a+n+1);
      for (i=1;i<=n;i++) num[a[i].ed]=i;
    
      for (i=1;i<=m;i++) {
        scanf("%lld %lld %lld",&u,&v,&l);
        to[u].push_back(v); len[u].push_back(l);
        to[v].push_back(u); len[v].push_back(l);
      }
      
      memset(dis1,0x3f,sizeof(dis1));
      dis1[1]=0; num[1]=-2;
      memset(disn,0x3f,sizeof(disn));
      //cout<<dis1[2]<<endl;
      disn[n]=0; num[n]=-1;
    
      for (i=1;i<=n;i++) {
        long long x=a[i].ed;
        l=to[x].size();
        for (j=0;j<l;j++) if (num[to[x][j]]<i) {
          dis1[x]=min(dis1[x],dis1[to[x][j]]+len[x][j]);
          disn[x]=min(disn[x],disn[to[x][j]]+len[x][j]);
        }
        for (j=0;j<l;j++) if (num[to[x][j]]<i){
          dis1[to[x][j]]=min(dis1[to[x][j]],dis1[x]+len[x][j]);
          disn[to[x][j]]=min(disn[to[x][j]],disn[x]+len[x][j]);
          if (dis1[to[x][j]]+disn[to[x][j]]<=b) {
            printf("%lld",max(max(a[i].f,f1),fn));
            return 0;
          }
        }
        if (dis1[x]+disn[x]<=b) {
          printf("%lld",max(max(a[i].f,f1),fn));
          return 0;
        }
      }
      puts("AFK");
    }
  • 相关阅读:
    写在最顶部
    新一轮的战斗。
    Codeforces Round #180
    git学习笔记
    感悟、方向、计划
    .NET (c#)序列化和反序列化
    类的序列化发送和接受
    Log4Net: TextBoxBaseAppender
    任何成功不能只靠自己一个人
    技术问题,总是在短期被高估,在长期被低估
  • 原文地址:https://www.cnblogs.com/shxnb666/p/11427360.html
Copyright © 2011-2022 走看看