satelites   3년 전

문제 다리만들기2를 

1. 인접리스트를 만든다.

2. MST를 구한다.

3. 정답을 출력한다.

저는 위와 같이 풀었습니다.

근데 다른 사람 코드를 보니

1. 인접행렬을 만든다.

2. 모든 스패닝 트리를 구한다.

3. 정답을 출력한다.

로 푼 사람이 있더군요. 

근데 여기서 궁금해진게, 모든 스패닝 트리를 구하는 알고리즘입니다.

아래 코드는 다른 분이 dfs로 스패닝 코드를 모두 탐색하는 코드입니다. 1에서 2로가는 edge와 2에서 1로가는 edge를 같은 길로 처리하지 않아서 중복이 발생하더라고요.

인접리스트나 행렬 만으로는 이 중복을 처리하는게 불가능한가요? 인접리스트나 행렬만으로 중복없이 모든 가능한 스패닝 트리를 구하는 방법이 있을까용?

댓글을 작성하려면 로그인해야 합니다.