Doby's Lab

백준 14248번: 점프 점프 (C++) 본문

PS/BOJ

백준 14248번: 점프 점프 (C++)

도비(Doby) 2022. 6. 16. 22:35

https://www.acmicpc.net/problem/14248

 

14248번: 점프 점프

첫 번째 줄에는 돌다리의 돌 개수 n이 주어진다.(1≤n≤100,000) 돌의 번호는 왼쪽부터 1번에서 n번이다. 다음 줄에는 그 위치에서 점프할 수 있는 거리 Ai가 주어진다.(1≤Ai≤100,000) 다음 줄에는 출

www.acmicpc.net


Solved By: BFS

 

#include <iostream>
#include <vector>
#include <queue>
#define MAX 100001
using namespace std;

vector<int> arr(MAX, 0);
int n, s;

int bfs(int node){
    int cnt = 0;
    cnt++;
    queue<int> q;
    q.push(node);
    vector<bool> visited(n + 1, false);
    visited[node] = true;
    //cout << node << '\n';
    
    while(!q.empty()){
        int now = q.front();
        q.pop();
        
        if(now - arr[now] >= 1 && !visited[now - arr[now]]){
            visited[now - arr[now]] = true;
            q.push(now - arr[now]);
            //cout << now - arr[now] << '\n';
            cnt++;
        }
        
        if(now + arr[now] <= n && !visited[now + arr[now]]){
            visited[now + arr[now]] = true;
            q.push(now + arr[now]);
            //cout << now + arr[now] << '\n';
            cnt++;
        }
    }
    return cnt;
}

int main(){
    cin >> n;
    for(int i = 1; i <= n; i++) cin >> arr[i];
    cin >> s;
    
    cout << bfs(s);
    return 0;
}

 

728x90

'PS > BOJ' 카테고리의 다른 글

백준 15720번: 카우버거 (C++)  (0) 2022.06.19
백준 14955번: How Many to Be Happy? (C++)  (0) 2022.06.18
백준 21010번: Slow Down (C++)  (0) 2022.06.12
백준 1210번: 마피아 (C++)  (0) 2022.06.12
백준 14286번: 간선 끊어가기 2 (C++)  (0) 2022.06.12