관리 메뉴

기억을 위한 기록들

[백준 5567: 결혼식] - C++ 본문

Coding Test - cpp/BFS

[백준 5567: 결혼식] - C++

에드윈H 2021. 2. 10. 13:49

www.acmicpc.net/problem/5567

 

5567번: 결혼식

2와 3은 상근이의 친구이다. 또, 3과 4는 친구이기 때문에, 4는 상근이의 친구의 친구이다. 5와 6은 친구도 아니고, 친구의 친구도 아니다. 따라서 2,3,4 3명의 친구를 결혼식에 초대한다.

www.acmicpc.net

#include<iostream>
#include<queue>
#include<string.h>
#include<vector>
using namespace std;

vector<int> map[501];
bool chk[501];

int main() {
	int n, m;

	cin >> n >> m;
	int x, y;
	for (int i = 1; i <= m; i++)
	{
		cin >> x >> y;

		map[x].push_back(y);
		map[y].push_back(x);
	}


	queue<pair<int,int>> q;
	int result = 0;

	q.push({ 1,0 });
	chk[1] = true;
	int level = 1;
	while (!q.empty())
	{
		int curNum = q.front().first;
		int nextLevel = q.front().second+1;

		if (nextLevel == 3) //친구의 친구의 친구라서 탈출
		{
			break;
		}
		q.pop();
		for (int j = 0; j < map[curNum].size(); j++)
		{
			int cur = map[curNum][j];
			if (!chk[cur])
			{
				chk[cur] = true;
				q.push({ cur,nextLevel });
				result++;
				
			}
		}
	}

	cout << result << endl;
	return 0;
}