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

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

Vasya의 그래프

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

요약
금지된 K개의 노드 쌍과 순서대로 주어지는 M개의 간선이 있을 때, 어떤 금지된 쌍도 연결하지 않는 간선만 받아들이고 남는 간선 번호를 출력한다.
난이도

어려움10점 중 8점

유형
유니온 파인드, 그래프, DFS, 구현
정답자
아직 제출이 없습니다

문제

Vasya에게 그래프가 있다. 그래프에는 NN개의 정점이 있지만 아직 간선은 하나도 없다. Vasya는 앞으로의 그래프 구조를 신경 쓰고 있다. KK쌍의 정점 {u_ju\_j, v_jv\_j}을 알고 있는데, 그래프에서 이 정점들 사이에 경로가 존재하면 그래프에 돌이킬 수 없는 일이 일어난다. Vasya는 무슨 수를 써서라도 그것을 막아야 한다.

Vasya는 MM개의 무방향 간선 목록을 만들었다. Vasya는 정해진 순서대로 간선을 검사하면서, 가능하면 반드시 그래프에 넣는다. 어떤 간선을 추가해서 돌이킬 수 없는 일이 일어나면, Vasya는 그 간선을 그냥 버린다. 그래프에 넣을 수 있는 간선과 쓰레기통으로 가야 하는 간선을 구하는 것이 과제다.

입력

입력 파일의 첫째 줄에 세 정수 NN, KK, MM이 주어진다 (1≤N≤1051 \leq N \leq 10^5, 0≤K,M≤1050 \leq K, M \leq 10^5).

이어서 KK개의 줄이 주어지고, ii번째 줄에는 두 정수 u_iu\_i와 v_iv\_i가 주어진다. 이는 충돌하는 정점 번호로, 두 정점 사이에 간선이 있으면 안 된다 (1≤u_i<v_i≤N1 \leq u\_i < v\_i \leq N). 충돌하는 정점 쌍은 서로 다르다.

다음으로 MM개의 줄이 주어지고, ii번째 줄에는 두 정수 u~_i\tilde u\_i와 v~_i\tilde v\_i가 주어진다. 이는 그래프에 추가할 수 있는 간선의 두 정점 번호다 (1≤u~_i<v~_i≤N1 \leq \tilde u\_i < \tilde v\_i \leq N). 이 간선들은 검사 순서대로 주어진다. 목록에서 간선은 서로 다르다.

출력

출력 파일의 첫째 줄에는 Vasya가 그래프에 넣을 수 있는 간선의 개수를 출력한다. 둘째 줄에는 그 간선들의 번호를 오름차순으로 공백으로 구분해 출력한다.

예제2

  1. 예제 1

    입력
    3 1 3
    1 2
    1 2
    2 3
    1 3
    
    예상 출력
    1
    2
    
  2. 예제 2

    입력
    5 2 6
    1 2
    2 3
    1 3
    2 4
    3 4
    1 4
    4 5
    1 5
    
    예상 출력
    3
    1 2 5