만드는 중입니다

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

경로 동일성

시간 제한1초메모리 제한1024 MB

요약
N과 M이 주어졌을 때, 정점 N개로 이루어진 방향 그래프(자기 자신으로 가는 간선 허용)에서 모든 정점 쌍 사이의 길이 2인 경로가 정확히 M개가 되도록 간선을 만들거나, 불가능하면 -1을 출력합니다.
난이도

보통10점 중 7점

유형
행렬, 수학, 조합론
정답자
아직 제출이 없습니다

문제

마을 NN개로 이루어진 나라 X가 있다. 각 마을에는 11번부터 NN번까지 순서대로 번호가 붙어 있다. X의 지도자가 신뢰하는 브레인 중 한 명인 준원이는 지금 어려운 상황에 놓여 있다. 준원이는 각 마을 사이를 잇는 여러 개의 일방통행 도로를 건설해야 한다. 한 마을 uu에서 다시 uu로 가는 도로도 존재할 수 있고, 마을 uu, vv에 대해 uu에서 vv로 가는 도로는 최대 하나다. 마을 uu에서 uu로 가는 도로 역시 최대 하나다. 준원이는 특정 마을끼리만 협력하는 일을 막고 모든 마을이 함께 친목을 도모하도록 다음 조건을 만족하는 도로를 설계하고자 한다. 조건: 임의의 두 마을 uu, vv에 대하여 uu에서 vv로 가는 길이가 2인 서로 다른 경로의 개수가 정확히 MM개이다. 단, uu와 vv는 같은 마을일 수 있다. 주어진 NN과 MM에 대하여 준원이가 조건을 만족하도록 도로를 설계할 수 있는지 판별하고, 가능하다면 그렇게 할 수 있는 방법을 하나 제시하자.

입력

첫째 줄에 NN과 MM이 차례대로 주어진다. 1≤N≤5001 \le N \le 500, 1≤M≤50001 \le M \le 5000이다.

출력

목표가 달성 가능하다면 그 예시를 다음 형식으로 출력하여라. 첫째 줄에는 준원이가 건설해야 하는 도로의 개수 EE를 출력한다. 두 번째 줄부터 E+1E+1번째 줄까지는, ii번째 줄에 i−1i-1번째 도로의 출발 마을과 도착 마을의 번호를 순서대로 출력한다. 목표가 달성 불가능하면 −1-1을 출력하여라.

예제2

  1. 예제 1

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

    입력
    5 4
    예상 출력
    -1