[2606번 바이러스 의사코드]

1. 컴퓨터 개수 n, 연결 개수 m 입력받기
입력: n (컴퓨터 수)
입력: m (연결 개수)

2. 그래프 만들기 (연결 리스트)
graph = 크기 n+1 인 2차원 리스트
for i = 1 to m:
    a, b 입력
    graph[a]에 b 추가
    graph[b]에 a 추가   // 양방향 연결

3. 방문 체크 배열 만들기
visited = 크기 n+1, 전부  false으로 초기화

4. 스택 만들기 (DFS용)
st = 빈 리스트
st에 1 넣기 (시작 컴퓨터)
visited[1] = true

5. 감염된 컴퓨터 개수 변수
cnt = 0

6. DFS 반복 (스택 사용)
while 스택이 비어있지 않으면:
    cur = 스택의 마지막 값 꺼내기
    
    cur와 연결된 모든 컴퓨터 next에 대해 반복:
        if visited[next] == 0 이면:
            visited[next] = 1
            st에 next 넣기
            cnt = cnt + 1   // 1번 제외 감염된 컴퓨터 수 증가

7. 결과 출력
cnt 출력





[11724 연결요소 의사코드]

입력: N (정점 개수), M (간선 개수)

그래프 graph[1..N] 준비
방문 배열 visited[1..N] 준비 (모두 false로 초기화)

M번 반복:
    a, b 입력
    graph[a]에 b 추가
    graph[b]에 a 추가   // 양방향 그래프

count ← 0   // 연결 요소 개수

for start = 1부터 N까지:
    만약 visited[start]가 false라면:
        count ← count + 1   // 새로운 연결 덩어리 발견

        스택 st 생성
        st에 start 넣기
        visited[start] ← true

        while 스택이 비어있지 않다면:
            cur ← 스택에서 하나 꺼내기

            for cur와 연결된 모든 next 노드:
                만약 visited[next]가 false라면:
                    visited[next] ← true
                    스택에 next 넣기

출력 count

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: