Skip to main content
  1. Posts/
  2. Algorithm/

BOJ 32655 출구가 바뀌는 미궁

·166 words·1 min
Jiho Kim
Author
Jiho Kim
달려 또 달려

📝 문제 정보
#

🧐 관찰 및 접근
#

  • 시작 정점에서 각 출구로 갈 수 있는 최단 경로를 구한 후, 열리는 타이밍에 맞춰 나갈 수 있는 최소 시간을 구하자.
  • $KX$초 단위로 출구가 도는게 로테이션 돌고, 이분탐색으로 그 타이밍을 찾은 후 그 블럭에서 나갈 수 있는지, 그 다음블럭에서 나갈 수 있는지 체크하면 될 것 같다.

💻 풀이
#

  • 코드 (C++):
void solve(){
    ll N, M, K; cin >> N >> M >> K;
    vector<vector<pll>> links(N+1);
    rep(i, 0, M){
        ll u, v, w; cin >> u >> v >> w;
        links[u].push_back({v, w});
        links[v].push_back({u, w});
    }
    vector<ll> dist(N+1, LLONG_MAX);
    priority_queue<pll, vector<pll>, greater<pll>> pq;
    dist[1] = 0;
    pq.push({0, 1});
    while(!pq.empty()){
        auto [cd, cur] = pq.top(); pq.pop();
        if(dist[cur] < cd) continue;
        for(auto [nxt, w]: links[cur]){
            ll nd = cd + w;
            if(nd < dist[nxt]){
                dist[nxt] = nd;
                pq.push({nd, nxt});
            }
        }
    }
🔒

구현 코드 잠금

아래 쿠팡 링크를 방문하시면 코드가 공개됩니다.
광고 수익이 블로그 운영에 도움이 됩니다 🙏

🛒 쿠팡 방문하고 코드 보기

방문 후 잠금이 자동으로 해제됩니다