#include <iostream> #include <cstdio> #include <cmath> #include <cstring> #include <algorithm> #include <queue> #include <stack> #include <vector> #include <iomanip> #include <climits> using namespace std; int n,m,d[200]; vector<pair<int,int> >e[200]; void init() { for(int i=0;i<200;i++) { e[i].clear(); d[i]=1e9; } } int main(int argc, char *argv[]) { while(scanf("%d%d",&n,&m)!=EOF) { init(); for(int i=0;i<m;i++) { int x,y,z; scanf("%d%d%d",&x,&y,&z); e[x].push_back(make_pair(y,z)); e[y].push_back(make_pair(x,z)); } int s,t; scanf("%d%d",&s,&t);//s为起点,t为终点 priority_queue<pair<int,int> >q; d[s]=0; q.push(make_pair(-d[s],s)); while(!q.empty()) { int now=q.top().second; q.pop(); for(int i=0;i<e[now].size();i++) { int v=e[now][i].first; if(d[v]>d[now]+e[now][i].second) { d[v]=d[now]+e[now][i].second; q.push(make_pair(-d[v],v)); } } } printf("%d\n",d[t]); } return 0; }