연금술
시간 제한1초메모리 제한64 MB
여러 물질을 보유한 상태에서만 일어나는 반응들이 주어질 때, 요스코가 처음 가진 물질에서 출발해 결국 얻을 수 있는 모든 물질을 구한다.
문제
연금술사들이 금을 만들려고 애쓰던 시절, 세상에 알려진 물질은 모두 가지였고 각 물질에는 번부터 번까지 번호가 붙어 있었다. 오랜 연구 끝에 연금술사들은 연금 반응의 목록을 얻었다. 반응 하나는 물질 집합 을 다른 물질 집합 로 바꾼다. 예를 들어 물질 집합 가 한 번 반응해 새로운 물질 집합 을 만든다.
요슈코는 현대의 연금술사이고, 서로 다른 물질 을 가지고 있다. 각 물질의 양은 무한하다. 반응은 왼쪽 물질을 모두 가지고 있을 때만 일으킬 수 있고, 한 번 일으키면 오른쪽 물질을 모두 얻는다. 반응에 쓴 물질은 줄지 않으며, 새로 얻은 물질도 다음 반응에 쓸 수 있다.
요슈코가 옛 연금술사들의 반응 목록으로 만들어 낼 수 있는 물질을 모두 구하라.
입력
첫째 줄에 정수 과 이 주어진다. ()
둘째 줄에 요슈코가 처음에 가진 물질의 번호 가 개 주어진다. ()
셋째 줄에 알려진 반응의 개수 가 주어진다. ()
이어지는 개 줄에 반응 목록이 주어진다. 반응 하나는 세 줄로 설명한다.
- 첫째 줄에 정수 과 이 주어진다. ()
- 둘째 줄에 서로 다른 정수 가 개 주어진다. ()
- 셋째 줄에 서로 다른 정수 가 개 주어진다. ()
이 반응은 물질 집합 을 물질 집합 로 바꾼다.
모든 의 합은 을 넘지 않는다. 모든 의 합도 을 넘지 않는다.
출력
첫째 줄에 요슈코가 얻을 수 있는 물질의 개수 를 출력한다.
둘째 줄에 그 물질의 번호 를 오름차순으로 정렬해 공백으로 구분하여 개 출력한다. 처음부터 가진 물질도 얻을 수 있는 물질로 센다.
힌트
첫 번째 예제에는 반응이 두 개 있다. 첫 번째 반응은 물질 집합 를 으로 바꾸고, 두 번째 반응은 을 로 바꾼다. 요슈코가 처음에 가진 물질은 이므로 첫 번째 반응으로 물질 을 얻어 이 되고, 이어서 두 번째 반응으로 물질 도 얻는다.
두 번째 예제에서 요슈코가 처음에 가진 물질은 다. 두 번째 반응으로 물질 을 얻고, 그다음 세 번째 반응으로 물질 를 얻는다. 첫 번째 반응은 물질 이 없어서 쓸 수 없다.