#include<stdio.h> #include<iostream> #include<queue> using namespace std; #define N 205 #define INF 99999999 int n,m,map[N][N]; int visited[N],dis[N]; int SPFA(int src,int des){ int i; for(i=0;i<n;i++){ dis[i]=INF; visited[i]=0; } queue<int> myqueue; while(!myqueue.empty()) myqueue.pop(); dis[src]=0; visited[src]=1; myqueue.push(src); int tmp; while(!myqueue.empty()){ tmp=myqueue.front(); myqueue.pop(); visited[tmp]=0; for(i=0;i<n;i++) if(dis[i]>dis[tmp]+map[tmp][i]){ dis[i]=dis[tmp]+map[tmp][i]; if(!visited[i]){ visited[i]=1; myqueue.push(i); } } } return dis[des]; } int main(){ int u,v,cost; while(scanf("%d%d",&n,&m)!=EOF){ int i,j; for(i=0;i<n;i++) for(j=0;j<n;j++) map[i][j]=INF; for(i=0;i<m;i++){ scanf("%d%d%d",&u,&v,&cost); if(cost<map[u][v]) map[u][v]=map[v][u]=cost; } int s,t; scanf("%d%d",&s,&t); int ans=SPFA(s,t); if(ans<INF) printf("%d ",ans); else printf("-1 "); } return 0; }