[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
To embed this project on your website, copy the following code and paste it into your website's HTML: