아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

쇼핑몰

시간 제한1초메모리 제한256 MB

요약
각 제품을 그 제품을 파는 상점 하나에 배정하고, 어떤 상점이 파는 제품을 다른 곳에서 이미 산 뒤에 그 상점에 들어가지 않도록 상점 방문 순서를 정한다.
난이도

보통10점 중 7점

유형
그래프, 그리디, 위상 정렬, 구현
정답자
아직 제출이 없습니다

문제

Byton은 부모님의 심부름으로 근처 쇼핑몰에 가서 목록에 있는 mm개의 상품을 사려고 한다. 상품에는 11부터 mm까지 번호가 붙어 있다. Byton은 쇼핑을 좋아하기 때문에 쇼핑몰의 모든 가게를 각각 정확히 한 번씩 방문하려고 한다. Byton은 어떤 순서로 가게를 방문하고, 그중 일부 가게에서 아직 사지 않은 목록의 상품을 살 것이다.

짐작할 수 있듯이 어떤 상품은 여러 가게에서 팔 수도 있다. 안타깝게도 Byton은 약간 편집증이 있어서 무작위 보안 검사를 매우 두려워한다. 그래서 이미 다른 곳에서 산 상품을 파는 가게에 들어가는 곤란한 상황을 피하려고 한다.

Byton이 보안 요원과 곤란한 상황을 겪지 않도록 모든 가게를 방문하고 상품을 사는 전략을 찾을 수 있는가?

입력

입력의 첫째 줄에는 두 정수 n,mn, m이 주어진다. (1≤n,m≤10001 \le n, m \le 1000) nn은 쇼핑몰의 가게 수이고 mm은 Byton이 사야 하는 상품 수이다. 다음 nn개 줄은 쇼핑몰의 가게를 나타낸다. ii번째 줄은 ii번째 가게를 나타낸다. 각 줄은 ii번째 가게에서 살 수 있는 Byton의 관심 상품 수를 나타내는 kik_i로 시작한다. (1≤ki≤m1\leq k_i\leq m) 그다음에 kik_i개의 정수가 오름차순으로 주어진다. 각 정수는 11과 mm 사이이고 Byton의 목록에 있는 상품을 나타낸다.

출력

올바른 쇼핑 전략이 존재하지 않으면 NO 한 단어를 출력한다. 그렇지 않으면 첫째 줄에 YES를 출력한다. 둘째 줄에는 Byton이 가게를 방문하는 순서인 11부터 nn까지의 서로 다른 정수 nn개를 출력한다. 마지막 셋째 줄에는 11부터 nn까지의 정수 mm개를 출력한다. ii번째 정수는 Byton이 상품 ii를 사야 하는 가게를 나타낸다. 답이 여러 개면 아무거나 출력한다.

힌트

먼저 Byton은 아무것도 사지 않고 가게 11에 간다. 그다음 가게 22에 가서 상품 22와 44를 산다. 이어서 가게 33에서 상품 33을 사고, 마지막으로 가게 44에서 상품 11을 산다.

예제1

  1. 예제 1

    입력
    4 4
    1 2
    2 2 4
    2 1 3
    1 1
    
    예상 출력
    YES
    1 2 3 4
    4 2 3 2