#include<bits/stdc++.h>
using namespace std;
long long n,m,head[500009],tot=0,dp[100009],mid;
long long f[500005],b;
bool fa=false;
struct node{
int next,to;
long long w1;
}p[500009];
int addp(int u,int v,long long w){
tot++;
p[tot]={head[u],v,w};
head[u]=tot;
};
bool vis[500005];
bool SPFA(){
queue<int> q;
vis[1]=true;
dp[1]=0;
q.push(1);
while(!q.empty()){
int o=q.front();
q.pop();
vis[o]=false;
for(int i=head[o];i!=0;i=p[i].next){
int x=p[i].to,y=p[i].w1;
if(f[x]>mid)continue;
if(dp[o]+y<dp[x]){
dp[x]=dp[o]+y;
if(!vis[x]){
q.push(x);
vis[x]=true;
}
}
}
}
if(dp[n]>b)return false;
else{
fa=true;
return true;
}
}
int main(){
cin>>n>>m>>b;
for(int i=1;i<=n;i++){
cin>>f[i];
dp[i]=pow(2,31)-1;
}
for(int i=0;i<m;i++){
int u,v;
long long w;
cin>>u>>v>>w;
if(u==v)continue;
addp(u,v,w);
addp(v,u,w);
}
long long l=0,r=1000000009;
while(l<=r){
mid=(l+r)/2;
if(SPFA())r=mid-1;
else l=mid+1;
for(int i=1;i<=n;i++){
vis[i]=false;
dp[i]=pow(2,31)-1;
}
}
if(!fa)cout<<"AFK"<<endl;
else cout<<l;
}
测试了测试点一和样例在c++上都能过,但在洛谷上就是RE,数组开了十倍大小,也没有死循环,求大佬帮忙找一下问题