문제
https://www.acmicpc.net/problem/5567
5567번: 결혼식
예제 1의 경우 2와 3은 상근이의 친구이다. 또, 3과 4는 친구이기 때문에, 4는 상근이의 친구의 친구이다. 5와 6은 친구도 아니고, 친구의 친구도 아니다. 따라서 2, 3, 4 3명의 친구를 결혼식에 초대
www.acmicpc.net
Algorithm
문제에서 상근이의 친구와 친구의 친구를 초대한다고 하였으므로 bfs나 dfs를 상근이를 기준으로 1번한 후에 상근이와 연결된 간선만 탐색하면 되는 문제이다.
문제에서 제시된 입력을 토대로 graph배열을 만들고, 1을 기준으로하여 탐색후 invited배열에 적용한다. 그 후에 1과 연결된 정점을 탐사한 후에 탐색을 종료한다. 이때, 1도 탐사를 하여 1이 된 상황이므로 출력을 할때는 invited배열에서 1의 개수에서 1(자기 자신)을 빼준 값을 출력해 주면 된다.
이때, 예제 입력2와 같이, 1과 연결된 간선이 없는 경우에는 초대할 사람이 없으므로 0을 출력하도록 한다.
Code
input = __import__('sys').stdin.readline
n = int(input())
m = int(input())
graph = [[] for i in range(n+1)]
invited = [0]*(n+1)
for _ in range(m):
a,b = map(int,input().split())
graph[a].append(b)
graph[b].append(a)
for i in graph[1]:
invited[i] = 1
for x in graph[i]:
invited[x] = 1
if max(invited) == 0:
print(0)
else:
print(sum(invited)-1)
'Koala - 13기 > 코딩테스트 준비 스터디' 카테고리의 다른 글
[PG/python3] 네트워크 (0) | 2024.02.18 |
---|---|
[백준/Python] 9375번 패션왕 신해빈 (0) | 2024.02.18 |
[백준/C++] 1002번: 터렛 (0) | 2024.02.16 |
[백준/C++] 10825번: 국영수 (0) | 2024.02.16 |
[백준/C++] 연결 요소의 개수 (0) | 2024.02.15 |