CCCPaste

bfs01PJ

#include <bits/stdc++.h>
#define pii pair<int,int>
#define MAXN 100

const int INF = 1e9;

using namespace std;

vector<pii> grafo[MAXN];

int dist[MAXN];

void bfs01(int s){
deque<pii> 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]);
}