#include <iostream>
#include <vector>
using namespace std;
vector<int> graph[501];
bool visit[501] = {false, };
int bfs(int startV)
{
int numF = 0;
visit[startV] = true;
numF += graph[startV].size();
for (int i : graph[startV]) visit[i] = true;
for (int i : graph[startV]) {
for (int j : graph[i]) {
if (visit[j] == false) {
visit[j] = true;
numF++;
}
}
}
return numF;
}
void input()
{
int numV, numE;
int tmp1, tmp2;
cin >> numV;
cin >> numE;
for (int i = 0; i < numE; i++) {
cin >> tmp1 >> tmp2;
graph[tmp1].push_back(tmp2);
graph[tmp2].push_back(tmp1);
}
}
int main(void)
{
input();
cout << bfs(1) << endl;
return 0;
}
처음에는 bfs를 사용해 해결하려고 했다.
하지만 생각해보니 친구의 친구까지만 초대하면 되는거라서 그냥 for문을 2번 돌렸다.
벡터 순회할때 반복자 써봤는데 정말 편하다.
'알고리즘 > 백준' 카테고리의 다른 글
1926 그림 (0) | 2020.10.12 |
---|---|
2251 물통 (0) | 2020.10.12 |
2234 성곽 (0) | 2020.10.12 |
2023 신기한 소수 (0) | 2020.10.12 |
1405 미친 로봇 (0) | 2020.10.11 |