Hikenny25

11724 - 연결 요소의 개수 본문

baekjoon (solved.ac)/class 3 Solve

11724 - 연결 요소의 개수

hikenny 2022. 10. 29. 22:07

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

 

11724번: 연결 요소의 개수

첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주

www.acmicpc.net

 

 

- 그래프 탐색

 

import sys
input = sys.stdin.readline

class Graph:
    def __init__(self, size):
        self.size = size
        self.matrix = [[0] * size for _ in range(size)]
        self.visited = [False] * size
    
    def addEdge(self, u, v):
        self.matrix[u][v] = self.matrix[v][u] = 1

    def printGraph(self):
        for i in self.matrix:
            print(*i)

    def dfs(self, k):
        self.visited[k] = True
        for i in range(self.size):
            if self.visited[i] == False and self.matrix[k][i] == 1:
                self.dfs(i)
    
    def returnVisited(self):
        return self.visited

n, m = map(int, input().split())

g = Graph(n)
for _ in range(m):
    e1, e2 = map(int, input().split())
    g.addEdge(e1-1, e2-1)

cnt = 0
for i in range(n):
    if g.returnVisited()[i] == False:
        g.dfs(i)
        cnt += 1

print(cnt)

 

연결 요소가 뭔지 몰라서 검색했다

연결되지 않은 그래프의 개수를 연결 요소의 개수라고 하더라!

 

아이디어는 간단하게 visited 리스트 선언해서, False인 것만 탐색 돌리고 탐색에서 나온 곳은 True로 변경해주면 된다

 

바로 품ㅎ

'baekjoon (solved.ac) > class 3 Solve' 카테고리의 다른 글

18870 - 좌표 압축  (0) 2022.10.30
2630 - 색종이 만들기  (0) 2022.10.29
2667 - 단지번호붙이기  (0) 2022.10.28
11403 - 경로 찾기  (0) 2022.10.27
11286 - 절댓값 힙  (0) 2022.10.27
Comments