위상정렬에서 BFS로 사이클 검사하는 방법
2019. 8. 27. 20:01ㆍ알고리즘/암기
사이클이 생겼다는 것은 모든 정점을 방문하지 못하게 된다. 따라서 정점의 갯수만큼 큐를 돌리면서 중간에 큐가 비었다는 것은 사이클이 생겼다는 것을 의미한다
그리고 예외상황으로 첫번째와 마지막에서 사이클이 발생하는 것을 막기 위해서는 마지막에 한 번 더 indegree 검사를 해야만 사이클을 철저히 막을 수 있다
for(int i=0; i<정점갯수; i++) {
if(q.empty()) {
// 사이클 존재
break;
}
}
for(int i=0; i<정점갯수; i++) {
if(indegree[i] > 0) {
// 사이클 존재
break;
}
}
'알고리즘 > 암기' 카테고리의 다른 글
a의 배수이면서 b이상을 구하는 식 (0) | 2019.09.14 |
---|---|
스택에서 top과 현재의 연관성을 보고 싶을 때 (0) | 2019.08.29 |
pow를 지양해야 하는 이유 (0) | 2019.08.23 |
빈줄이 담겨진 string 입력을 받을 때 (0) | 2019.08.20 |
해시 hash (0) | 2019.08.13 |