최근에 문제가 더 다양한 백준으로 갈아타고 열심히 문제 푸느라 벨로그 작성이 조금 뜸했다.
그래프 관련 문제를 코딩테스트에서 마주한 적이 있는데 많이 부족하다고 느껴서 오늘은 그래프 문제집을 풀었고, 나는 이 뿐만 아니라 많이 부족하다는 것을 깨달았다 ^^..

처음에 5567번 문제를 여러 번 읽고 정확히 이해가 안되었는데, 힌트를 보고 정확히 이해했다.

즉, 상근이의 친구,그리고 그 친구들의 친구까지만 결혼식에 초대한다.
가장 큰 키포인트다. 따라서 나는 BFS로 풀었고, 상근이(0),친구(1),친구들의 친구(2)로 레벨을 매겨서 2부터는 queue에 push하지 않는다는 제한을 걸어서 돌렸다.
*참고로 매개변수에 level을 추가한 DFS로도 풀이가 가능하다.
###나의 풀이
#include <iostream>
#include <vector>
#include <queue>
#include <cstring>
#include <algorithm>
#define MAX 501
using namespace std;
int n,m;
vector<int> map[MAX];
bool visitied[MAX];
struct node{
int x,level;
};
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
queue <node> q;
int result=0;
cin >> n;
cin >> m;
for(int i =0; i< m ; i++){
int a ,b;
cin >> a >> b;
map[a].push_back(b);
map[b].push_back(a);
}
q.push({1,0});
while(!q.empty()){
node now = q.front();
int index = now.x;
q.pop();
visitied[index] = true;
if(now.level == 2) continue;
for(int i = 0 ; i < map[index].size(); i++){
if(visitied[map[index][i]] )continue;
visitied[map[index][i]] =true;
q.push({map[index][i],now.level+1});
result++;
}
}
cout<<result;
return 0;
}