카탁투스와 토러스
시간 제한3초메모리 제한1024 MB
간선이 한 번씩만 쓰이는 경로로 주어진 캑터스 그래프를 토러스 위에 놓을 수 있는지 판정합니다. 어떤 사이클의 간선을 따라 잘라도 종이가 한 조각으로 남아야 합니다.
문제
앨리스에게 종이 위에 올려놓고 싶은 좋은 카탁투스 그래프가 하나 있다. 이브는 이 카탁투스의 사이클 하나를 골라 그 사이클의 모든 간선을 따라 종이를 자르려고 한다. 그러면 종이는 두 부분으로 나뉘고 앨리스는 속상해질 것이다. 다행히 바바라가 앨리스에게 종이 토러스를 주었다. 종이 토러스는 위아래 변이 이어져 있고 왼쪽과 오른쪽 변도 비틀림 없이 이어진 종이이다. 토러스에서는 사이클의 모든 간선을 따라 종이를 잘라도 한 조각으로 남는 경우가 있다. 앨리스가 카탁투스를 토러스 위에 배치했을 때, 이브가 사이클 하나를 따라 잘라도 토러스가 두 개의 연결되지 않은 조각으로 나뉘지 않도록 할 수 있는지 판단하라.
카탁투스는 연결된 무방향 그래프이며, 모든 간선이 많아야 하나의 단순 사이클에 속한다. 직관적으로 카탁투스는 일부 사이클을 허용하는 트리의 일반화이다. 카탁투스에서 다중 간선(같은 두 정점을 잇는 여러 간선)과 루프(정점을 자기 자신에 잇는 간선)는 허용되지 않는다.
그래프를 종이에 배치한다는 것은 각 정점을 종이 위의 점으로 잡고, 각 간선을 양 끝 정점을 잇는 선분으로 그리되, 선분들이 끝점에서만 만나는 것을 뜻한다. 토러스에서는 선분이 종이의 가장자리를 몇 번이든 넘어갈 수 있다.
입력
입력은 하나 이상의 독립적인 테스트 케이스로 이루어진다.
각 테스트 케이스의 첫 줄에는 정수 과 이 주어진다(; ). 은 그래프의 정점 수이며, 정점은 부터 까지 번호가 매겨져 있다. 그래프의 간선은 간선이 서로 겹치지 않는 경로들의 집합으로 주어지며, 은 이 경로의 개수이다.
이어지는 개의 줄에는 각각 그래프 위의 경로가 하나씩 주어진다. 경로는 정수 ()로 시작하고, 그 뒤에 부터 까지의 정수 개가 이어진다. 이 정수들이 경로의 정점이다. 경로에서 인접한 두 정점은 서로 다르다. 경로는 같은 정점을 여러 번 지날 수 있지만, 한 테스트 케이스 전체에서 모든 간선은 정확히 한 번씩만 지난다. 그래프에는 다중 간선이 없으며, 두 정점 사이에 간선은 많아야 하나이다.
입력의 마지막 줄에는 0 두 개가 주어진다. 이는 테스트 케이스가 아니라 입력의 끝을 알리는 줄이므로 출력하지 않는다.
입력의 모든 그래프는 카탁투스이다. 입력 전체에서 의 총합과 의 총합은 각각 를 넘지 않는다.
출력
각 테스트 케이스에 대해, 카탁투스를 토러스 위에 배치할 수 있으면 "Yes", 그렇지 않으면 "No"를 한 줄에 출력한다.
힌트
첫 번째 테스트 케이스의 카탁투스를 토러스 위에 배치하는 한 방법이 그림에 나와 있다.
