#include<iostream> #include<cstdio> #include<cstring> using namespace std; int w[2509][2509]; int dis[2509]; int num[2509]; int a[2509][6200]; int b[2509]; int que[5000]; int main() { int m,n,s,e; int h=0; int t=1; scanf("%d%d%d%d",&m,&n,&s,&e); for(int i=1;i<=m;i++) dis[i]=0x7fffffff/3; for(int i=1;i<=m;i++) for(int j=1;j<=m;j++) w[i][j]=0x7fffffff/3; int x,y,z; for(int i=1;i<=n;i++) { scanf("%d%d%d",&x,&y,&z); a[x][++num[x]]=y; a[y][++num[y]]=x; w[x][y]=w[y][x]=z; } dis[s]=0; b[s]=1; que[t]=s; do { h++; h=(h-1)P00+1;\\除数太小会出错; int u=que[h]; b[u]=0; for(int i=1;i<=num[u];i++) { if(dis[a[u][i]]>dis[u]+w[u][a[u][i]]) { dis[a[u][i]]=dis[u]+w[u][a[u][i]]; if(b[a[u][i]]==0) { b[a[u][i]]=1; t++; t=(t-1)P00+1; que[t]=a[u][i]; } } } }while(h<=t); printf("%d",dis[e]); return 0; }