반응형
문제
해결 방법
링크(pair형)를 담는 벡터에 링크를 모두 담은 후, BFS방식을 사용하여 탐색함.
아쉬웠던 점
링크를 그냥 벡터에 넣어서 그래프 탐색 과정에서 모든 링크를 순회하다 보니 복잡도가 올라갔다. 2차원 형식으로 만들어서 줄여야 했는데 간만이라 잊었다...
코드
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
32
33
34
35
36
37
38
39
40
41
42
43
44
|
#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int Num, Link_Num, ans = 0;
cin >> Num >> Link_Num;
queue<int> Que;
vector<bool> Vec_Check(Num + 1, false);
vector<pair<int, int>> Vec(Link_Num * 2 + 1);
for (int i = 0; i < Link_Num * 2; i += 2)
{
cin >> Vec[i].first >> Vec[i].second;
Vec[i + 1].first = Vec[i].second;
Vec[i + 1].second = Vec[i].first;
}
//Bfs
Que.push(1);
Vec_Check[Que.front()] = true;
while (!Que.empty())
{
for (auto& itor : Vec)
{
if (itor.first == Que.front() && !Vec_Check[itor.second])
{
Vec_Check[itor.second] = true;
Que.push(itor.second);
++ans;
}
}
Que.pop();
}
cout << ans;
}
|
cs |
평범한 BFS탐색이다.
반응형
'코딩 > 문제풀이-백준' 카테고리의 다른 글
백준 14499번 - 주사위 굴리기 (C++) (0) | 2021.07.14 |
---|---|
백준 17413번 - 단어 뒤집기 2 (C++) (0) | 2021.07.09 |
백준 2164 - 카드2 (C++) (0) | 2021.05.07 |
백준 1916 - 최소비용 구하기 (C++) (0) | 2021.05.07 |
백준 2805 - 나무 자르기 (C++) (0) | 2021.05.07 |
댓글