• bfs임으로 먼저 방문한 것이 최단 거리
  •   deque<int> dq;
      dist[start] = 0;
      dq.push_front(start);
      
      while (!dq.empty()) {
          int u = dq.front(); dq.pop_front();
          for (auto [v, w] : adj[u]) {
              if (dist[v] > dist[u] + w) {
                  dist[v] = dist[u] + w;
                  if (w == 0) dq.push_front(v);
                  else dq.push_back(v);
              }
          }
      }
  • 거리 비교가 필요 없을 경우, 그냥 넘기기(이미 그 거리가 최적이므로)
  • (dist[x][y] != -1) continue;