BFS나 DFS 알고리즘을 알고있다면 쉬운 문제다. 인접행렬을 만들어보자 그리고 BFS는 큐/ DFS는 재귀를 기억하자.
BFS solution
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
importsysinput=sys.stdin.readlineif__name__=='__main__':N=int(input())M=int(input())board=[[0]*(N+1)for_inrange(N+1)]# index 맞추기위해서 N+1 만큼 생성
foriinrange(M):a,b=map(int,input().split())board[a][b],board[b][a]=1,1visited=[1]queue=[1]whilequeue:r=queue.pop(0)forcinrange(len(board[r])):ifboard[r][c]==1andcnotinvisited:visited.append(c)queue.append(c)print(len(visited)-1)#1번 컴퓨터 제외
importsysinput=sys.stdin.readlinedefdfs(r,visited):globalboardvisited.append(r)forcinrange(len(board[r])):ifboard[r][c]==1andcnotinvisited:dfs(c,visited)returnvisitedif__name__=='__main__':N=int(input())M=int(input())board=[[0]*(N+1)for_inrange(N+1)]# index 맞추기위해서 N+1 만큼 생성
foriinrange(M):a,b=map(int,input().split())board[a][b],board[b][a]=1,1visited=dfs(1,visited=[])print(len(visited)-1)#1번 컴퓨터 제외