끄적끄적 코딩
article thumbnail
Published 2019. 9. 26. 13:40
[C++] 백준 5567번 결혼식 알고리즘

상근이를 기준으로 1, 2번의 수를 구하는 문제입니다. (1과 2는 중복되지 않습니다.)
1. 상근이의 친구
2. 상근이의 친구에 친구

2차원 벡터에 연결관계를 넣어준 뒤
BFS를 방식으로 2번째 탐색까지 해주었습니다. (2번째 탐색 = 친구에 친구)
여기서 탐색된 사람들의 수를 세서 출력해주었습니다.

 

#include <iostream>
#include <cstring>
#include <vector>
#include <queue>
using namespace std;

int main(int argc, char *argv[]) 
{
	int n, m;
	int x, y;
	int count = 0;
	int visit[501] = { 0, };
	vector<vector<pair<int, int> > > v;
	queue<pair<int, int> > q;

	cin >> n >> m;

	v.resize(n + 1);
	for (int i = 0; i < m; ++i) {
		cin >> x >> y;

		v[x].push_back(make_pair(y, 0));
		v[y].push_back(make_pair(x, 0));
	}

	q.push(make_pair(1, 0));
	visit[1] = 1;

	while (!q.empty()) {
		int s = q.front().first;
		int n = q.front().second;

		q.pop();

		if (n == 2) {
			continue;
		}

		for (int i = 0; i < v[s].size(); ++i) {
			int e = v[s][i].first;
			if (visit[e] == 0) {
				visit[e] = 1;
				++count;
				q.push(make_pair(e, n + 1));
			}
		}
	}
	
	cout << count << endl;

	return 0;
}

'알고리즘' 카테고리의 다른 글

[C++] 백준 5397번 키로거  (0) 2019.09.26
[C++] 백준 1773번 폭죽쇼  (0) 2019.09.26
[C++] 백준 1068번 트리  (0) 2019.09.26
[C++] 백준 4963번 섬의 개수  (0) 2019.09.26
[C++] 백준 1120번 문자열  (0) 2019.09.26

검색 태그