Pagini recente »
Cod sursă (job #369266)
Cod sursă (job
#369266)
#include<bits/stdc++.h>
using namespace std;
ifstream fin("dragoni2.in");
ofstream fout("dragoni2.out");
typedef struct nod{
int nr,dist,viz;
nod *next;
} nod;
nod *p[801],*r;
int e,n,m;
int a[801],x,y,l,i,dist_min,l_max;
bool viz[801];
void ADD(int i,int j,int l){
r=new nod;
r->nr=j;
r->dist=l;
r->next=p[i];
p[i]=r;
}
void DFS1(int a,int l){
viz[a]=1;
for(nod *r=p[a];r;r=r->next){
if(r->dist<=l && viz[r->nr]==0)DFS1(r->nr,l);
}
}
int main(){
fin >> e >> n >> m;
for(i=1;i<=n;i++)p[i]=0;
for(i=1;i<=n;i++)fin >> a[i];
for(i=0;i<m;i++){
fin >> x >> y >> l;
ADD(x,y,l);
ADD(y,x,l);
}
if(e==1){
DFS1(1,a[1]);
for(r=p[n];r;r=r->next){
if(viz[r->nr]){
if(dist_min==0)dist_min=r->dist;
else dist_min=(dist_min<r->dist)?(dist_min):(r->dist);
}
}
for(i=1;i<=n;i++)if(viz[i] && a[i]>=dist_min)l_max=(l_max>a[i])?(l_max):(a[i]);
fout << l_max;
}
return 0;
}