#include #define pii pair #define MAXN 100 const int INF = 1e9; using namespace std; vector grafo[MAXN]; int dist[MAXN]; void bfs01(int s){ deque q; q.push_front({0,s}); dist[s] = 0; while(!q.empty()){ pii e = q.front(); int v = e.second; q.pop_front(); for(pii viz : grafo[v]){ int u = viz.second; int w = viz.first; if(dist[v]+w < dist[u]){ dist[u] = dist[v]+w; if(w == 0){ q.push_front(viz); } else{ q.push_back(viz); } } } } } int main(){ int n, m; scanf("%d %d", &n, &m); for(int i = 0; i < m; i++){ int a, b, c; scanf("%d %d %d", &a, &b, &c); //aresta que liga a em b com custo c grafo[a].push_back({c, b}); grafo[b].push_back({c, a}); } for(int i = 0; i <= n; i++){ dist[i] = INF; } bfs01(1); printf("%d", dist[n]); }