#include<bits/stdc++.h>
using namespace std;
const int N=200005;
struct edge{
int next,to,dis;
}g[2*N];
int n,m,x,y,z,s,t,head[N],num,vis[N],dis[N];
void add(int from,int to,int dis){
g[++num].next=head[from];
g[num].to=to;
g[num].dis=dis;
head[from]=num;
}
typedef pair<int,int> pii;//FIRST表示权值
bool operator < (const pii &a, const pii &b){
return a.first>b.first;
}
int main(){
scanf("%d%d%d%d",&n,&m,&s,&t);
for(int i=1;i<=m;i++){
scanf("%d%d%d",&x,&y,&z);
add(x,y,z);
add(y,x,z);
}
priority_queue<pii>q;
int edGe=0;
memset(dis,0x3f,sizeof dis);
dis[s]=0;
q.push(make_pair(dis[s],s));
while(!q.empty()){
pii tmp=q.top();
q.pop();
int k=tmp.second;
// if(vis[k]) continue;
vis[k]=true;
for(int i=head[k];i;i=g[i].next){
if(dis[g[i].to]>max(dis[k],g[i].dis)){
q.push(make_pair(max(dis[k],g[i].dis),g[i].to));
dis[g[i].to]=max(dis[k],g[i].dis);
}
}
}
printf("%d\n",dis[t]);
return 0;
}
最后一个点TLE,思路是最朴素的dijkstra算法加堆优化,为啥还是超时???