#include#include #include using namespace std; #define inf 0x3f3f3f3f int n,m;//n现有城镇数目,m道路数目 int map[300][300]; int dis[300],vis[300]; int path[500]; void dijkstra(int a,int b) { int i,j,k,minn; for(i=0;i dis[k]+map[k][j]) { dis[j]=dis[k]+map[k][j]; path[j]=k; //j是从k过来的 } } } } int main() { while(scanf("%d%d",&n,&m)!=EOF) { int a,b,x,s,e; memset(map,inf,sizeof(map)); for(int i=0;i >a>>b>>x; if(map[a][b]>x)//城镇之间道路不止一条 map[a][b]=map[b][a]=x; } cin>>s>>e; dijkstra(s,e); int p[500],k=0,temp=e; //输出路径 while(temp!=s) { p[k++]=temp; //一开始p[0]=终点 temp=path[temp]; //倒着来,是谁推向temp的 } p[k]=s; for(int i=k;i>0;i--) cout< <<" "; cout< <