링크 컷 토마토
시간 제한3.5초메모리 제한1024 MB
간선이 특정 날짜에 생기거나 끊기는 그래프에서, 익은 토마토와 연결된 익지 않은 토마토가 익는 가장 이른 날을 구합니다.
문제
토마토가 꼭지를 안테나처럼 사용해 서로 연결을 형성하고 끊으며 네트워크를 이룬다는 사실은 잘 알려져 있다. 두 토마토 사이의 연결은 날짜가 바뀌는 순간에만 형성되거나 끊어질 수 있으며, 임의의 두 토마토 사이의 연결 상태는 하루에 두 번 이상 바뀌지 않는다.
토마토 네트워크를 전공한 농부 존은 토마토의 연결 상태와 숙성도의 상관관계를 발견했다. 존의 발견에 따르면, 익은 토마토와 덜 익은 토마토가 하루 동안 연결되어 있다면 덜 익은 토마토는 익은 토마토의 영향을 받아 익는다.
끈질긴 연구 끝에 존은 토마토 사이의 연결 상태를 관찰하는 기기를 개발했다. 이 기기로 일에 어떤 토마토가 익어 있고 어떤 토마토들이 연결되어 있는지 알 수 있다. 임의의 두 토마토 사이의 연결이 언제 형성되고 끊어지는지도 추적할 수 있다.
찬우는 천하제일 코딩대회 출제비를 전부 털어 존의 기기와 부터 까지 번호가 하나씩 붙은 토마토 개를 샀다. 그러나 어떤 토마토가 언제 익는지는 알아내지 못했다. 찬우가 잘 익은 토마토를 먹을 수 있도록, 존의 기기에서 얻은 정보로 각 토마토가 익는 날짜를 계산하는 프로그램을 작성하자.
입력
첫째 줄에 토마토의 개수 , 일에 연결되어 있는 토마토 쌍의 수 , 일에 익어 있는 토마토의 수 , 연결 상태가 변하는 횟수 가 공백으로 구분되어 주어진다.
둘째 줄부터 개의 줄에 걸쳐 중복 없이 일의 초기 연결 상태가 주어진다. 각 줄에는 일에 연결되어 있는 두 토마토의 번호 , 가 공백으로 구분되어 주어진다.
그다음 줄에는 일에 익어 있는 서로 다른 토마토의 번호 , , , 가 공백으로 구분되어 주어진다.
그다음 줄부터 개의 줄에 걸쳐 연결 상태가 변하는 순서대로 주어진다. 각 줄에는 날짜 와 두 토마토의 번호 , 가 공백으로 구분되어 주어진다. 일에 두 토마토가 연결되어 있었다면 일 0시부터 연결이 끊어지고, 연결되어 있지 않았다면 일 0시부터 새롭게 연결된다. 주어지는 쌍은 모두 서로 다르다.
입력으로 주어지는 모든 수는 정수이다.
출력
첫째 줄에 개의 정수를 공백으로 구분하여 출력한다. 번 토마토가 영원히 익지 않는다면 번째 정수로 을, 언젠가 익는다면 익는 날짜를 출력한다.
힌트
입출력 양이 많으므로 문제지 2-4페이지의 언어 가이드에 있는 빠른 입출력을 사용하는 것을 권장한다.