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

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

두 왕국과 격리

시간 제한8초메모리 제한512 MB

요약
두 왕국을 잇는 도로 그래프에서 홀짝성 조건을 지키며 닫을 수 있는 도로의 최대 개수와 닫는 순서를 구합니다.
난이도

어려움10점 중 9점

유형
수학, 그래프, 구현
정답자
아직 제출이 없습니다

문제

두 왕국 AA (도시 N1N_1개)와 BB (도시 N2N_2개)가 있고, 양방향 도로가 MM개 있다. 각 도로는 AA의 도시 하나와 BB의 도시 하나를 잇는다. 어떤 두 도시 사이에도 도로는 최대 하나다.

왕국 AA의 도시는 1번부터 N1N_1번까지, 왕국 BB의 도시는 N1+1N_1 + 1번부터 N1+N2N_1 + N_2번까지 번호가 매겨져 있다. 도로는 1번부터 MM번까지 번호가 매겨져 있으며, 도로 ii는 도시 aia_i와 bib_i를 잇는다. 여기서 1≤ai≤N11 \le a_i \le N_1이고 N1+1≤bi≤N1+N2N_1 + 1 \le b_i \le N_1 + N_2이다.

한 왕국에 위험한 바이러스가 나타나서, 왕들은 도로 일부를 닫기로 했다.

DjD_j를 도시 jj와 다른 도시를 잇는 도로의 처음 개수, djd_j를 도시 jj와 다른 도시를 잇는 도로 중 아직 열려 있는(닫히지 않은) 도로의 개수라고 하자.

도로 xx는 닫기 전에 다음 조건을 모두 만족할 때만 닫을 수 있다.

  • 이전에 닫힌 적이 없어야 한다.
  • daxd_{a_x}와 DbxD_{b_x}의 홀짝이 같아야 한다(둘 다 짝수이거나 둘 다 홀수).
  • dbxd_{b_x}와 DaxD_{a_x}의 홀짝이 같아야 한다(둘 다 짝수이거나 둘 다 홀수).

닫을 수 있는 도로의 최대 개수를 구하고, 그 최대를 달성하는 닫기 순서를 찾아라.

입력

첫 줄에 세 정수 N1N_1, N2N_2, MM이 주어진다. 각각 왕국 AA의 도시 수, 왕국 BB의 도시 수, 도로 수이다(1≤N1,N2,M≤30001 \le N_1, N_2, M \le 3000, 1≤M≤N1⋅N21 \le M \le N_1 \cdot N_2).

이어서 MM개의 줄에 도로가 주어진다. ii번째 줄에는 도로 ii가 잇는 두 도시 aia_i와 bib_i가 주어진다(1≤ai≤N11 \le a_i \le N_1, N1+1≤bi≤N1+N2N_1 + 1 \le b_i \le N_1 + N_2). i≠ji \ne j이면 ai≠aja_i \ne a_j 또는 bi≠bjb_i \ne b_j이다.

출력

첫 줄에 닫을 수 있는 도로의 최대 개수 KK를 출력한다. 둘째 줄에는 닫는 순서대로 도로 번호 rir_i (1≤ri≤M1 \le r_i \le M) KK개를 출력한다.

최적해가 여러 개라면 그중 아무거나 출력해도 된다.

힌트

첫 번째 예제에서 D1=3D_1 = 3, D2=2D_2 = 2, D3=1D_3 = 1, D4=2D_4 = 2, D5=2D_5 = 2이다. 처음에는 dd와 DD가 같으므로 도로 1, 4, 5를 닫을 수 있다.

도로 1을 닫으면 d1=2d_1 = 2, d3=0d_3 = 0이 된다. 도로 4와 5는 여전히 닫을 수 있다. 도로 4를 닫으면 d2=1d_2 = 1, d4=1d_4 = 1이 되어, 다음에 닫을 수 있는 도로는 도로 2뿐이다. 도로 2를 닫으면 d1=1d_1 = 1, d2=1d_2 = 1, d3=0d_3 = 0, d4=0d_4 = 0, d5=2d_5 = 2가 된다. 세 개보다 많이 닫을 수는 없다.

예제3

  1. 예제 1

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

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

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