만드는 중입니다

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

트리 장인

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

요약
주어진 단순 그래프에 간선을 추가해 트리로 만드는 방법의 수를 구합니다. 그 수가 K보다 크면 -1을 출력합니다.
난이도

보통10점 중 6점

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

문제

세종이는 한양에서 유명한 트리 장인이다. 어떤 그래프든 가져오면 멋진 트리로 바꿔 준다!

정점이 NN개, 간선이 MM개인 단순 그래프가 주어진다. 단순 그래프란 각 간선이 서로 다른 두 정점을 잇고, 임의의 두 정점 uu, vv를 잇는 간선이 둘 이상 존재하지 않는 그래프이다.

세종이는 정점 1,2,…,N1, 2, \ldots, N 중 두 정점을 잇는 새 간선을 0개 이상 적절히 추가하여 이 그래프를 트리로 만든다.

세종이는 작업을 시작하기 전에 이렇게 트리로 만드는 방법이 몇 가지인지 가늠해 보려 한다. 세종이를 도와 그 방법의 수가 KK를 넘는지 확인하고, 넘지 않는다면 정확한 수를 구하자. 단, 추가한 간선의 집합이 다를 때에만 서로 다른 방법으로 본다. 모든 간선은 방향이 없다.

입력

첫 번째 줄에 세 정수 NN, MM, KK가 공백으로 구분되어 주어진다. (2≤N≤100 0002 \le N \le 100\,000, 1≤M≤200 0001 \le M \le 200\,000, 1≤K≤3 0001 \le K \le 3\,000)

이후 MM개의 줄에 걸쳐 ii번째 간선이 잇는 두 정점 uiu_i, viv_i가 공백으로 구분되어 주어진다. (1≤ui<vi≤N1 \le u_i < v_i \le N, (ui,vi)≠(uj,vj)(u_i, v_i) \ne (u_j, v_j))

출력

조건대로 그래프를 트리로 만드는 방법의 수가 KK를 넘으면 -1을, 넘지 않으면 정확한 수를 출력한다.

예제2

  1. 예제 1

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

    입력
    4 2 2
    1 2
    2 3
    
    예상 출력
    -1