
#include<iostream> #include<cstdio> #include<cstring> using namespace std; const int INF=0x3f3f3f3f; const int N=210; int n,m,s,t; int map[N][N],dis[N],vis[N]; void Dijkstra(int src){ int i; for(i=0;i<n;i++){ dis[i]=map[src][i]; vis[i]=0; } dis[src]=0; vis[src]=1; int j,k,tmp; for(i=0;i<n;i++){ tmp=INF; for(j=0;j<n;j++) if(!vis[j] && tmp>dis[j]){ k=j; tmp=dis[j]; } if(tmp==INF) break; vis[k]=1; for(j=0;j<n;j++) if(!vis[j] && dis[j]>dis[k]+map[k][j]) dis[j]=dis[k]+map[k][j]; } } int main(){ //freopen("input.txt","r",stdin); while(~scanf("%d%d",&n,&m)){ int u,v,w; for(int i=0;i<n;i++) for(int j=0;j<n;j++) map[i][j]=INF; for(int i=0;i<m;i++){ scanf("%d%d%d",&u,&v,&w); if(map[u][v]>w) map[u][v]=map[v][u]=w; } scanf("%d%d",&s,&t); Dijkstra(s); if(dis[t]==INF) printf("-1 "); else printf("%d ",dis[t]); } return 0; }