Spanning Tree 의 Root 가 아닌 Node 에 대해서 Subtree 가 자기 자신으로 이어지는 경우 역시 단절점이 될 수 있다. Parent 와 이어진 부분과 Subtree 부분으로 나눌 수 있기 때문이다. 그래서 visits[cur] < tmp 부분이 visits[cur] <= tmp 으로 바뀌었다.
이에 따라 if (l == parent) continue; 부분이 생략이 가능하다. 이는 약간 기술적인데 정점 A 에서 Subtree 가 있어서 그 Node 중 하나인 B 가 있다고 하자. B->A 로 직접 가는 경로가 있는 것과 B 에서 Subtree 를 거슬러 올라와서 다시 A 에 도달하는 것과 결과적으로 차이가 없다. 어차피 둘다 다 단절점임을 나타내기 때문이다. 그래서 생략이 허용된다.
Spanning Tree 의 Root 가 되는 Node 인 경우 Childs 가 2개 이상이면 자기 자신이 단절점이 된다. 이를 위해서 nChilds 를 두어 갯수를 센다.
이때 Graph 에서의 Edges 의 갯수가 아님에 주의하자. 예를들어 Graph A->B, A->C, B->C 의 경우 Spanning Tree 는 A->B->C 가 된다. A 와 이어진 Edges 는 2개이지만 Spanning Tree 의 Childs 는 1개 이다.
댓글남기기