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