from collections import deque
n = int(input())
friends = [[0 for _ in range(n)] for _ in range(n)]
for i in range(n):
friend = input()
for j in range(n):
if friend[j] == 'Y':
friends[i][j] = 1
def bfs(start):
visited = [0] * n
visited[start] = 1
queue = deque([(start, 0)])
count = 0
while queue:
current, distance = queue.popleft()
if distance >= 2:
continue
for next in range(n):
if not visited[next] and friends[current][next]:
count += 1
visited[next] = 1
queue.append((next, distance + 1))
return count
answer = 0
for start in range(n):
answer = max(answer, bfs(start))
print(answer)
n = int(input())
friends = [[0 for _ in range(n)] for _ in range(n)]
for i in range(n):
friend = input()
for j in range(n):
if friend[j] == 'Y':
friends[i][j] = 1
answer = 0
for start in range(n):
answer = max(answer, bfs(start))
모든 노드를 시작점으로 하여 BFS 탐색을 수행하고, 각 노드에서 얻은 최대 친구 수를 answer 변수에 저장한다.
def bfs(start):
visited = [0] * n
visited[start] = 1
queue = deque([(start, 0)])
count = 0
while queue:
current, distance = queue.popleft()
if distance >= 2:
continue
for next in range(n):
if not visited[next] and friends[current][next]:
count += 1
visited[next] = 1
queue.append((next, distance + 1))
return count
return count
가장 유명한 사람의 2-친구수를 출력한다.