본문 바로가기
백준 & 프로그래머스

백준.바이러스.2606.py

by concho 2023. 9. 15.

https://www.acmicpc.net/problem/2606

 

2606번: 바이러스

첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하인 양의 정수이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍

www.acmicpc.net

import sys
import collections

def virus(adj_dic):
    bfs_visited = {k : False for k in adj_dic}  # 노드 방문여부
    bfs_visit_list = []                         # 방문한 결과 
    bfs_deque = collections.deque()             # 큐

    def bfs(node):
        bfs_visited[node] = True    
        bfs_visit_list.append(node)
        for i in adj_dic[node]:
            adj_node = i
            if bfs_visited[adj_node] == False and not adj_node in bfs_deque:
                bfs_deque.appendleft(adj_node)
        if bfs_deque:
            bfs(bfs_deque.pop())
        return
    
    bfs(1)
    return bfs_visit_list

if __name__ == '__main__':
    n = int(input())
    n = int(input())
    adjac_dic = dict()
    # 인접 노드 딕셔너리 만들기
    for _ in range(n):
        node1, node2 = map(int, sys.stdin.readline().split())
        if node1 in adjac_dic:
            adjac_dic[node1].append(node2)
        else:
            adjac_dic[node1] = [node2]
        if node2 in adjac_dic:
            adjac_dic[node2].append(node1)
        else:
            adjac_dic[node2] = [node1]
    # 간선이 0개 일때 처리
    try:
        tm_list = virus(adjac_dic)
        print(len(tm_list)-1)
    except:
        print(0)

'백준 & 프로그래머스' 카테고리의 다른 글

백준.유기농 배추.1012.py  (0) 2023.09.19
백준.영역 구하기.2583.py  (0) 2023.09.18
백준.등수 구하기.1205.py  (0) 2023.09.13
백준.11724.연결 요소의 개수.py  (0) 2023.09.12
백준.올림픽.8979.py  (0) 2023.09.12

댓글