[백준] 2644, 촌수계산(C++, BFS)

2023. 9. 2. 13:29·🖥️ Computer Science/Algorithm

BFS 기초 문제 풀어보기

 

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

 

2644번: 촌수계산

사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어

www.acmicpc.net

 

2644번 : 촌수계산

 

* 입출력 예시

// 입력
9
7 3
7
1 2
1 3
2 7
2 8
2 9
4 5
4 6

// 출력
3

8과 6일땐 ? => 8에서 6을 못 감 => -1 출력
#include <iostream>
#include <queue>
#include <vector>
#include <algorithm>
#include <string>
#include <unordered_map>
#include <sstream>
using namespace std;
#define MAX 102

int n, human1, human2, m;
int graph[MAX][MAX] = {0,};
int visited[MAX] = {0, };
queue<int> q;

void bfs(int V){
    q.push(V);

    while(!q.empty()){
        V = q.front();
        q.pop();
        for(int w=1; w<=n; w++){
            if(visited[w] == 0 && graph[V][w] == 1){ // 방문은 안 헀지만, 방문해야 한다면?
                q.push(w);
                visited[w] = visited[V] + 1;
            }
        }
    }
}

// 거리가 1인, 양방향 연결 그래프
int main(void){
    cin >> n; // 최대 번호
    cin >> human1 >> human2; // 출발지와 목적지
    cin >> m; // 커플 수

    for(int i=0; i<m; i++){
        int x, y;
        cin >> x >> y;
        graph[x][y] = graph[y][x] = 1;
    }

    bfs(human1);

    if(visited[human2] == 0){
        cout << -1;
    }else{
        cout << visited[human2];
    }

    return 0;
}
저작자표시 (새창열림)

'🖥️ Computer Science > Algorithm' 카테고리의 다른 글

Swift로 코드 최적화하기  (1) 2024.05.25
[백준] 7576, 토마토 (Swift)  (0) 2024.02.13
[백준] 13414, 수강신청 (C++, 해시맵)  (0) 2023.08.10
[C언어] 표준 입력 함수, scanf() 함수의 오류 찾기  (0) 2023.05.31
[백준] 2579번, 계단 오르기 (Java/자바) 동적 계획법 실습  (0) 2023.05.26
'🖥️ Computer Science/Algorithm' 카테고리의 다른 글
  • Swift로 코드 최적화하기
  • [백준] 7576, 토마토 (Swift)
  • [백준] 13414, 수강신청 (C++, 해시맵)
  • [C언어] 표준 입력 함수, scanf() 함수의 오류 찾기
kyxxn
kyxxn
컴퓨터공학을 좋아하는 대학생의 공부 일기
  • kyxxn
    컴공 학부생의 공부 일기
    kyxxn
  • 전체
    오늘
    어제
    • 분류 전체보기 (156)
      • 📱 iOS (64)
        • Xcode (10)
        • Swift (17)
        • Swift Concurrency (12)
        • UIKit (21)
        • SwiftUI (0)
      • 🖥️ Computer Science (57)
        • 🏛️ Software Architecture Pa.. (2)
        • 👨🏻‍🎨 Design Pattern (3)
        • Data Structure (4)
        • Algorithm (10)
        • Computer Architecture (4)
        • Operating System (19)
        • Network (15)
      • ✍🏻 회고록 (9)
      • 🎸 기타 (25)
        • 해커톤 (1)
        • git (6)
        • 세미나 (1)
        • 책을 읽고 (1)
        • AOS, Kotlin (6)
        • Reinforcement Learning (9)
  • 블로그 메뉴

    • 링크

      • 깃허브
      • 일상 블로그
    • 공지사항

    • 인기 글

    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.0
    kyxxn
    [백준] 2644, 촌수계산(C++, BFS)
    상단으로

    티스토리툴바