Search
Duplicate
📗

결혼식

주차
문제번호
5567
언어
C++
티어
실버
유형
그래프
nj_Blog
nj_상태
이해도
100%
풀이
사람
이해도 2
13 more properties

문제접근

인접리스트
BFS 탐색
depth가 3이상이면 친구의 친구의 친구가 되어버리기 그 경우는 초대 안함 (continue)
이미 초대한 친구면 패스(visited continue)

놓쳤던 부분

코드

2288 KB

0 ms

#include <iostream> #include <vector> #include <queue> #include <utility> using namespace std; int answer = 0; vector<vector<int> >relationship; vector<bool> checked; void bfs() { queue<pair<int,int> > q; q.push({1, 0}); checked[1] = true; while (!q.empty()) { int currentNumber = q.front().first; int currentDepth = q.front().second; q.pop(); for (unsigned int i = 0; i < relationship[currentNumber].size(); i++) { int nextNumber = relationship[currentNumber][i]; int nextDepth = currentDepth + 1; if (checked[nextNumber]) continue ; if (nextDepth >= 3) continue ; answer++; checked[nextNumber] = true; q.push({nextNumber, nextDepth}); } } } int main(void) { int n, m; int input1, input2; ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> n; cin >> m; relationship.resize(n + 1); checked.resize(n + 1); for (int i = 0; i < m; i++) { cin >> input1 >> input2; relationship[input1].push_back(input2); relationship[input2].push_back(input1); } bfs(); cout << answer; return (0); }
C++
복사