#include<cstdio>
#include<queue>
using namespace std;
const int MAXN=10005,MAXM=20005,INF=0x3f3f3f3f;
int head[MAXN],d[MAXN],cnt;
bool vis[MAXN];
struct Edge {
int end,next,val;
}edge[MAXM];
int mymax(int a,int b) {
return (a>b?a:b);
}
void add(int u,int v,int w) {
edge[++cnt].next=head[u];
edge[cnt].end=v;
edge[cnt].val=w;
head[u]=cnt;
}
void SPFA(int n,int s) {
for(int i=1;i<=n;i++)
d[i]=INF;
d[s]=0;
queue<int>q;
q.push(s);
vis[s]=true;
while(!q.empty()) {
int k=q.front();
q.pop();
vis[k]=false;
for(int i=head[k];i!=0;i=edge[i].next) {
if(mymax(d[k],edge[i].val)<d[edge[i].end]) {
d[edge[i].end]=mymax(d[k],edge[i].val);
if(!vis[edge[i].end]) {
vis[edge[i].end]=true;
q.push(edge[i].end);
}
}
}
}
}
int main() {
int n,m,s,t;
scanf("%d %d %d %d",&n,&m,&s,&t);
for(int i=1,u,v,w;i<=m;i++) {
scanf("%d %d %d",&u,&v,&w);
add(u,v,w);
add(v,u,w);
}
SPFA(n,s);
printf("%d",d[t]);
return 0;
}
错在哪里了?