유 방향 그래프 에서 두 개의 서로 다른 꼭짓점 은 그래프에 서로간에 경로 가 있으면 강력하게 연결됩니다 . 그래프 의 강하게 연결된 구성 요소 는 그래프의 하위 집합이므로 하위 집합의 각 고유 정점 쌍이 강하게 연결되어 있으며 더 많은 정점을 하위 집합에 추가하면이 속성이 손상됩니다.
문제는 그래프를 강력하게 연결된 구성 요소로 분리하는 것입니다. 특히, 모든 SCC를 그래프로 출력해야합니다.
I / O :
입력으로 방향 모서리 목록, 인접 목록, 인접 행렬 또는 기타 적절한 입력 형식을 사용할 수 있습니다. 확실하지 않은지 물어보십시오. 그래프에 완전히 연결이 끊어진 정점이없고 자기 모서리가 없다고 가정 할 수 있지만 더 이상 가정 할 수는 없습니다. 선택적으로 정점 수와 정점 수를 입력으로 사용할 수도 있습니다.
출력으로, 각 서브리스트가 강하게 연결된 구성 요소 인 정점 목록 목록과 같은 정점의 분할 또는 각 레이블이 다른 구성 요소에 해당하는 정점 레이블을 지정해야합니다.
레이블을 사용하는 경우 레이블은 꼭짓점이거나 연속적인 정수 시퀀스 여야합니다. 이는 계산을 레이블로 넘치지 않도록하기위한 것입니다.
예 :
이 예제는 각 에지가 첫 번째 항목에서 두 번째 항목으로 향하는 가장자리 목록과 출력 파티션을 나타냅니다. 이 형식이나 다른 형식을 자유롭게 사용할 수 있습니다.
입력은 첫 번째 라인에 있고 출력은 두 번째 라인에 있습니다.
[[1, 2], [2, 3], [3, 1], [1, 4]]
[[1, 2, 3], [4]]
[[1, 2], [2, 3], [3, 4]]
[[1], [2], [3], [4]]
[[1, 2], [2, 1], [1, 3], [2, 4], [4, 2], [4, 3]]
[[1, 2, 4], [3]]
[[1, 2], [2, 3], [2, 5], [2, 6], [3, 4], [3, 7], [4, 3], [4, 8], [5, 1], [5, 6], [6, 7], [7, 6], [8, 7], [8, 4]]
[[1, 2, 5], [3, 4, 8], [6, 7]]
점수 및 제한 사항 :
표준 허점 은 언제나처럼 금지되어 있습니다. 또한 강력하게 연결된 구성 요소를 처리하는 기본 제공 기능도 금지되어 있습니다.
제공된 예제에서 솔루션은 1 시간 이내에 실행되어야합니다. (이것은 느린 지수 솔루션을 방지하기위한 것이며 다른 것은 없습니다.)
이것은 코드 골프입니다. 가장 적은 바이트가 이깁니다.
8
와 구성 요소에없는 [3,4]
에만 각각 수 없기 때문에 6
과 7
(어느 것도 그것에 도달).