救救我,一直re

P1462 通往奥格瑞玛的道路

lyc_AFO @ 2020-03-11 15:40:38

#include<bits/stdc++.h>
using namespace std;
struct edge{
    long long u,v,w,next;
}a[10000006];
struct czx{
    long long t,x;
}c[10000005];
long long dis[10000005];
long long t,l,r,n,m,ans=1e16,k,f[10000005],vis[10000005],vex[10000005],q[10000005];
void sr(long long u,long long v,long long w){
    a[++k].u=u;
    a[k].v=v;
    a[k].w=w;
    a[k].next=vex[u];
    vex[u]=k;
}
int cmp(czx a,czx b){
    return a.t<b.t;
}
int SPFA_cheak(long long x){
    if(f[1]>x||f[n]>x)return false;
    long long r=0,h=1;
    q[++r]=t;
    dis[t]=0;
    vis[t]=1;
    while(h<=r){
        int u=q[h++];
        vis[u]=0;
        for(int i=vex[u];i;i=a[i].next){
            int v=a[i].v;
            if(f[v]>x)continue;
            if(dis[v]>dis[u]+a[i].w){
                dis[v]=dis[u]+a[i].w;
                if(!vis[v]){
                    vis[v]=1;
                    q[++r]=v;
                }
            }
        }
    }
    return true;
}
int main(){
    memset(dis,0x7f,sizeof(dis));
    std::cin>>n>>m>>t;
    for(int i=1;i<=n;i++){
        std::cin>>f[i];
        r=max(l,f[i]);
    }
    for(int i=1;i<=m;i++){
        int u,v,w;
        std::cin>>u>>v>>w;
        sr(u,v,w);
        sr(v,u,w);
}
    long long mid;
    while(l<=r){
        mid=(l+r)/2;
        if(SPFA_cheak(mid)){
            ans=mid;
            r=mid-1;
        }else{
        l=mid+1;
    }
}
    if(ans==1e16){
        std::cout<<"AFK";
    }else{
        std::cout<<ans;
    }

    return 0;
}

要疯,各位大佬帮帮我


by 丨Sky灬丨无惧 @ 2020-03-12 08:22:34

我又来搞笑了


by iMya_nlgau @ 2020-03-12 21:23:57

救不了你我也RE


|