트리 장인

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

요약
정점 N개와 간선 M개로 이루어진 단순 그래프가 주어질 때, 간선을 추가해 트리로 만드는 방법의 수를 세고 K를 넘으면 -1을, 아니면 정확한 값을 출력한다.
난이도

어려움10점 중 8점

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

문제

세종이는 한양에서 유명한 트리 장인이다. 어떤 그래프라도 들고 오면 멋진 트리로 탈바꿈해준다!

정점이 NN개, 간선이 MM개인 단순 그래프가 주어진다. 단순 그래프란, 각 간선이 서로 다른 두 점을 이으며, 어떤 두 정점 uu, vv에 대해서도 uu와 vv를 잇는 간선이 둘 이상 존재하지 않는 그래프를 말한다.

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

세종이는 작업에 들어가기 전에 위 조건대로 그래프를 트리로 만드는 방법의 수를 가늠해 보려 한다. 세종이를 도와 그 방법의 가짓수가 KK가지를 넘는지, 넘지 않는다면 정확한 가짓수까지 구해보자! 단, 추가한 간선 집합이 다를 경우에만 다른 방법으로 간주하며, 모든 간선에는 방향성이 없다.

입력

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

이후 MM개의 줄에 걸쳐 ii번째 간선이 잇는 두 정점 u_iu\_i, v_iv\_i가 공백으로 구분되어 주어진다. (1≤u_i<v_i≤N;(1 \le u\_i \lt v\_i \le N; (u_i,v_i)≠(u_j,v_j))(u\_i, v\_i) \ne (u\_j, v\_j) )

출력

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

예제2

  1. 예제 1

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

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