사이클 탐지
시간 제한1초메모리 제한128 MB
정점이 20개 이하인 그래프에서 사이클에 속하는 각 간선마다 그 간선을 포함하는 서로 다른 단순 사이클의 개수를 센다.
문제
컴퓨터들이 케이블로 연결된 네트워크가 있습니다. 각 케이블은 정확히 두 대의 컴퓨터를 연결하며, 두 컴퓨터 사이에는 케이블이 최대 한 개만 존재합니다.
주어진 네트워크에서 사이클에 포함되는 모든 케이블을 찾고, 각 케이블마다 그 케이블이 몇 개의 사이클에 포함되는지 구하세요.
사이클이란 어떤 컴퓨터 에서 출발하여 다시 로 돌아오는 케이블의 나열입니다. 단, 를 제외한 나머지 컴퓨터는 사이클 안에서 한 번씩만 등장해야 합니다. 케이블의 집합이 같다면, 방향이나 시작 컴퓨터가 달라도 하나의 사이클로 셉니다.
입력
첫째 줄에 네트워크에 있는 컴퓨터의 수를 나타내는 양의 정수 ()이 주어집니다.
다음 개의 줄에는 컴퓨터 사이의 연결 상태가 인접 행렬 형태로 주어집니다. 각 줄에는 공백으로 구분된 개의 값이 있습니다. 번째 줄 번째 열의 값이 이면 컴퓨터 과 사이에 직접 연결이 없다는 뜻이고, 그렇지 않으면 두 컴퓨터가 직접 연결되어 있다는 뜻입니다.
출력
첫째 줄에 적어도 하나의 사이클에 포함되는 케이블의 수 을 양의 정수로 출력합니다.
그다음 줄에는 각 케이블이 포함되는 사이클의 개수를 나타내는 개의 양의 정수를 공백으로 구분하여 출력합니다. 이 수열은 오름차순으로 정렬되어야 합니다.
사이클에 포함되는 케이블이 하나도 없다면 NO CYCLE 한 줄만 출력합니다.