Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- react modal
- react-router-dom
- 페이지이동함수
- 블로그업로드확인
- @environmentobject 프로퍼티 래퍼
- CSS
- 반응형 css
- 가로모드끄기
- 비동기함수
- @published 프로퍼티 래퍼
- react hook
- C++
- zustand
- react상태관리라이브러리
- GridItem
- featured-sliced-design
- 리렌더링최적화
- LazyHGrid
- modal 관리
- navigationBar 숨기기
- 동기 함수 내에서 비동기 함수 호출
- BFS
- zustand란
- LazyVGrid
- 세로모드끄기
- react fsd
- 리액트최적화
- @observedobject 프로퍼티 래퍼
- 페이지전환
- 컴퓨터네트워크
Archives
- Today
- Total
leebaek
[BOJ/2644번촌수계산] c++ / BFS 본문
문제
주어진 두 사람의 촌수 관계를 계산하는 문제
생각
vector로 풀면 되겠다!
문제풀이
1.주어진 두 사람의 정보를 s, e 에 저장
2.s를 큐에 푸쉬 ( 이때, 촌수는 0 임 ) + 방문표시
3.vector[s].size 만큼 반복문 돌면서 방문하지 않은 사람이면 큐에 푸쉬 + 방문표시
4.e인 사람이 나오면 cnt 출력
코드
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
using namespace std;
#define X first
#define Y second
int N, M, s, e, x, y, cnt=0;
int vis[101];
vector<int> map[101];
int BFS() {
queue<pair<int, int>> Q;
Q.push({s, 0});
vis[s] = 1;
while (!Q.empty()) {
int nx = Q.front().X;
int cnt = Q.front().Y;
Q.pop();
if ( nx == e )
return cnt;
for ( int i = 0; i < map[nx].size(); i++ ) {
if ( vis[map[nx][i]] == 1 ) continue;
Q.push({map[nx][i], cnt+1});
vis[nx] = 1;
}
}
return -1;
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> N;
cin >> s >> e;
cin >> M;
for ( int i = 0; i < M; i++ ) {
cin >> x >> y;
map[x].push_back(y);
map[y].push_back(x);
}
cout << BFS();
}
'BOJ_C++_PS' 카테고리의 다른 글
[BOJ/16953번A->B] c++ / BFS (0) | 2023.10.06 |
---|---|
[BOJ/1389번케빈베이컨의6단계 법칙] c++ / BFS (0) | 2023.10.05 |
[BOJ/7562번나이트의이동] c++ / BFS (0) | 2023.10.03 |
[BOJ/11725번트리의부모찾기] c++ / BFS (0) | 2023.10.02 |
[BOJ/4963번섬의개수] c++ / BFS (0) | 2023.10.01 |