#include using namespace std; #include using namespace atcoder; using ll=long long; using Graph=vector>>; #define MAX 100 #define MOD 1000000007 #define INF 1000000000000000000 int main(){ int N,M; cin>>N>>M; Graph G(N); vector a(M),b(M); vector c(M); for(int i=0;i>a[i]>>b[i]>>c[i]; a[i]--;b[i]--; G[a[i]].push_back(make_pair(b[i],i)); G[b[i]].push_back(make_pair(a[i],i)); } bool flag=false; for(int i=1;i edges; edges.push_back(G[v][0].second); v=G[v][0].first; vector dist(N,N+5); dist[v]=0; queue q; q.push(v); while(!q.empty()){ int v=q.front(); q.pop(); for(auto p:G[v]){ int nv=p.first; int e=p.second; if(dist[nv]>dist[v]+1){ dist[nv]=dist[v]+1; q.push(nv); } } } int k; for(int i=0;i edges2; if(dist[a[k]]=0;i--){ edges.push_back(edges2[i]); } if(dist[a[k]]dist[v]+1){ dist[nv]=dist[v]+1; q.push(nv); } } } vector edges3; v=N-1; while(dist[v]!=0){ for(auto p:G[v]){ int nv=p.first; int e=p.second; if(dist[nv]==dist[v]-1){ v=nv; edges3.push_back(e); break; } } } for(int i=edges3.size()-1;i>=0;i--){ edges.push_back(edges3[i]); } string S=""; for(int i=0;i