#include #include #include using namespace std; int G[200][200]; int pre[200],d[200]; int n; bool visited[200]; void dijk(int s,int g){ for(int i=0;id[i]&&!visited[i]){ m=d[i]; idx = i; } } if(idx==-1) break; visited[idx]=true; for(int i=0;id[idx]+G[i][idx]){ d[i]=d[idx]+G[i][idx]; pre[i]=idx; } } } vector root; int node = g; while(node!=-1){ root.push_back(node); node = pre[node]; } reverse(root.begin(),root.end()); for(int i=0,m=root.size();i>n>>m>>s>>g; for(int i=0;i>a>>b>>c; G[a][b]=G[b][a]=c; } dijk(s,g); return 0; }