여러 물질을 보유한 상태에서만 일어나는 반응들이 주어질 때, 요스코가 처음 가진 물질에서 출발해 결국 얻을 수 있는 모든 물질을 구한다.
보통7그래프BFS해시맵구현아직 제출이 없습니다시간 제한1초메모리 제한64 MB연금술사들이 금을 만들려고 애쓰던 시절, 세상에 알려진 물질은 모두 N가지였고 각 물질에는 1번부터 N번까지 번호가 붙어 있었다. 오랜 연구 끝에 연금술사들은 연금 반응의 목록을 얻었다. 반응 하나는 물질 집합 {X1,X2,…,XL}을 다른 물질 집합 {Y1,Y2,…,YR}로 바꾼다. 예를 들어 물질 집합 {1,4,5}가 한 번 반응해 새로운 물질 집합 {2,6}을 만든다.
요슈코는 현대의 연금술사이고, 서로 다른 물질 A1,A2,…,AM을 가지고 있다. 각 물질의 양은 무한하다. 반응은 왼쪽 물질을 모두 가지고 있을 때만 일으킬 수 있고, 한 번 일으키면 오른쪽 물질을 모두 얻는다. 반응에 쓴 물질은 줄지 않으며, 새로 얻은 물질도 다음 반응에 쓸 수 있다.
요슈코가 옛 연금술사들의 반응 목록으로 만들어 낼 수 있는 물질을 모두 구하라.
첫째 줄에 정수 N과 M이 주어진다. (1≤M≤N≤100000)
둘째 줄에 요슈코가 처음에 가진 물질의 번호 Ai가 M개 주어진다. (1≤Ai≤N)
셋째 줄에 알려진 반응의 개수 K가 주어진다. (1≤K≤100000)
이어지는 3K개 줄에 반응 목록이 주어진다. 반응 하나는 세 줄로 설명한다.
이 반응은 물질 집합 {X1,X2,…,XL}을 물질 집합 {Y1,Y2,…,YR}로 바꾼다.
모든 L의 합은 100000을 넘지 않는다. 모든 R의 합도 100000을 넘지 않는다.
첫째 줄에 요슈코가 얻을 수 있는 물질의 개수 X를 출력한다.
둘째 줄에 그 물질의 번호 Bi를 오름차순으로 정렬해 공백으로 구분하여 X개 출력한다. 처음부터 가진 물질도 얻을 수 있는 물질로 센다.
첫 번째 예제에는 반응이 두 개 있다. 첫 번째 반응은 물질 집합 {1,2}를 {3}으로 바꾸고, 두 번째 반응은 {1,3}을 {4}로 바꾼다. 요슈코가 처음에 가진 물질은 {1,2}이므로 첫 번째 반응으로 물질 3을 얻어 {1,2,3}이 되고, 이어서 두 번째 반응으로 물질 4도 얻는다.
두 번째 예제에서 요슈코가 처음에 가진 물질은 {1,4,5}다. 두 번째 반응으로 물질 6을 얻고, 그다음 세 번째 반응으로 물질 2를 얻는다. 첫 번째 반응은 물질 3이 없어서 쓸 수 없다.