만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

그래프 측정

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

요약
알려지지 않은 그래프의 간선을 무작위로 검은색과 흰색으로 k번 칠한 뒤, 정점마다 검은 간선 수만 보고 원래 그래프를 복원합니다.
난이도

어려움10점 중 8점

유형
확률, 수학
정답자
아직 제출이 없습니다

문제

앤드류에게 정점이 nn개인 단순 무방향 그래프가 있다 (1≤n≤201 \le n \le 20). 이 그래프에는 자기 루프와 중복 간선이 없다. 그는 다음 측정을 kk번 반복한다. 각 간선을 검은색 또는 흰색으로 독립적으로 칠하며, 두 색이 나올 확률은 각각 50%이다. 그다음 각 정점에 인접한 검은색 간선의 수를 세고, 이 nn개의 수를 당신에게 알려 준다.

목표는 주어진 k⋅nk \cdot n개의 수로 원래 그래프를 복원하는 것이다.

입력

첫 줄에 정수 nn과 kk가 주어진다(예제를 제외한 모든 경우에 k=800⋅n2k = 800 \cdot n^2). 이어서 kk개의 줄에 각각 정수 nn개가 주어진다. ii번째 줄은 측정 ii에서 정점 번호 순서대로 각 정점에 인접한 검은색 간선의 수이다.

출력

첫 줄에 간선의 수 mm을 출력한다. 이어서 mm개의 줄에 간선을 두 정점 번호로 나타내어 한 줄씩 출력한다. 정점 번호는 1부터 nn까지이며, 자기 루프는 없어야 하고 같은 정점 쌍을 잇는 간선은 최대 하나여야 한다. 간선의 순서와 각 간선 안에서 두 정점의 순서는 상관없다.

예제에서는 입력과 맞지 않더라도 올바른 그래프이면 인정된다(예를 들어 간선이 0개인 그래프도 인정된다). 예제 이외의 경우에는 입력을 실제로 생성한 그래프만 인정된다.

힌트

예제를 제외한 모든 경우에는 측정 횟수가 많다. 정확히는 k=800⋅n2k = 800 \cdot n^2이다. 예제가 아닌 테스트는 33개이다.

예제1

  1. 예제 1

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