728x90
내 블로그에 있던 bfs 정리글을 고대로 참조해서 풀었는데..
맞게한거같은데 자꾸 오류가 나길래 무엇이 원인인지 했더니만
우선 프로그래머스와는 다르게 백준은 cin도 내가 지정을 해줘야하기 때문에
배열크기나 원소의 초기값을 제대로 설정해줘야하는듯..
int의 초기값은 0이어서 괜찮지만 bool의 초기값은 true이기 때문에 {false,}를 이용해서 초기값을 설정해주어야 한다.
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
int main()
{
int answer = 0;
int comCount; int lineCount;
cin >> comCount;
bool isVisited[comCount + 1] = {false,};
vector<int> graph[comCount + 1];
cin >> lineCount;
for(int i = 0; i < lineCount; i++)
{
int a,b;
cin >> a >> b;
graph[a].push_back(b);
graph[b].push_back(a);
}
queue<int> q;
q.push(1);
while(!q.empty())
{
int x = q.front();
q.pop();
for(int i = 0; i < graph[x].size() ; i++)
{
int back = graph[x][i];
if(!isVisited[back]){
q.push(back);
isVisited[back] = true;
if(back > 1)
{
answer++;
}
}
}
}
cout << answer << endl;
return 0;
}
또한, 단순히 깊이를 구하는것이 아닌, 1과 연결된것들을 구해야 하므로 양방향으로 넣어줘야 한다.
728x90
'알고리즘 공부(C++)' 카테고리의 다른 글
[C++]프로그래머스 입국심사 (0) | 2023.08.21 |
---|---|
[C++] 백준 1012 유기농 배추 (DFS) (0) | 2023.08.21 |
[C++]프로그래머스 개인정보 수집 유효기간 (0) | 2023.08.20 |
[C++]프로그래머스 [3차]n진수 게임 (0) | 2023.08.12 |
[C++]프로그래머스 징검다리 건너기(이진탐색) (0) | 2023.08.03 |