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
- 비동기함수
- CSS
- BFS
- zustand란
- modal 관리
- 가로모드끄기
- featured-sliced-design
- react hook
- 블로그업로드확인
- LazyHGrid
- react-router-dom
- navigationBar 숨기기
- 리액트최적화
- react fsd
- zustand
- 컴퓨터네트워크
- @observedobject 프로퍼티 래퍼
- react상태관리라이브러리
- @published 프로퍼티 래퍼
- 리렌더링최적화
- 세로모드끄기
- 동기 함수 내에서 비동기 함수 호출
- 페이지전환
- C++
- @environmentobject 프로퍼티 래퍼
- 페이지이동함수
- LazyVGrid
- 반응형 css
- GridItem
Archives
- Today
- Total
leebaek
[BOJ/24445번알고리즘수업-너비우선탐색2] c++ / BFS 본문
문제
R 정점부터 시작해서 탐색하였을 때, 1부터 N의 방문된 순서를 출력하는 문제
-인접 정점은 내림차순으로 정렬됨
생각
벡터에 정점 간선 정보 넣고, 몇번째 순서가 오는지 확인
벡터 정렬을 어떻게 시켜야할지 몰랐음
sort(시작 주소, 끝주소, 조건)
문제풀이
1.양방향 간선이므로, u, v를 서로 푸쉬해줌
2.1부터 N까지 arr[i]의 정점들을 내림차순 해줌
3.정점 R부터 BFS 탐색
4.처음 R 정점은 방문순서 vis = 1 ( cnt = 1 )
5.큐가 빌 때까지 pop
5-1.큐에서 나온 원소의 방문순서는 vis = cnt+1
5-2.큐와 인접한 방문하지 않은 정점 큐에 푸쉬
6.1부터 N 정점의 vis 출력
코드
#include <iostream>
#include <algorithm>
#include <queue>
#include <cstring>
#include <vector>
using namespace std;
int N, M, R, u, v, cnt=0;
vector<int> arr[100001];
int vis[100001];
void BFS() {
queue<int> Q;
vis[R] = cnt++;
Q.push(R);
while (!Q.empty()) {
int cur = Q.front(); Q.pop();
vis[cur] = cnt++;
for ( int i = 0; i < arr[cur].size(); i++ ) {
if ( vis[arr[cur][i]] ) continue;
vis[arr[cur][i]] = 1;
Q.push(arr[cur][i]);
}
}
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> N >> M >> R;
for ( int i = 1; i <= M; i++ ) {
cin >> u >> v;
arr[u].push_back(v);
arr[v].push_back(u);
}
for ( int i = 1; i <= N; i++ )
sort(arr[i].begin(), arr[i].end(), greater<>());
BFS();
for ( int i = 1; i <= N; i++ )
cout << vis[i] << "\n";
}
'BOJ_C++_PS' 카테고리의 다른 글
[BOJ/3184번양] c++ / BFS (0) | 2023.10.27 |
---|---|
[BOJ/2146번다리만들기] c++ / BFS (1) | 2023.10.24 |
[BOJ/2636번치즈] c++ / BFS (1) | 2023.10.22 |
[BOJ/3055번탈출] c++ / BFS (1) | 2023.10.21 |
[BOJ/1707번이분그래프] c++ / BFS (1) | 2023.10.20 |