만드는 중입니다

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

스핑크스의 수수께끼

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

요약
연결된 그래프에서 각 정점의 숨은 색을 2750번 이하의 실험으로 알아내는 문제입니다. 실험마다 일부 정점의 색을 바꾸고 단색 연결 요소의 개수를 받습니다.
난이도

어려움10점 중 8점

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

문제

위대한 스핑크스가 당신에게 수수께끼를 냈습니다. 정점이 NN개인 그래프가 주어집니다. 정점은 0부터 N−1N - 1까지 번호가 매겨져 있습니다. 간선은 MM개이며 0부터 M−1M - 1까지 번호가 매겨져 있습니다. 각 간선은 양방향이고 서로 다른 두 정점을 잇습니다. 간선 jj는 정점 X[j]X[j]와 Y[j]Y[j]를 잇습니다. 같은 두 정점을 잇는 간선은 최대 하나입니다. 두 정점이 간선으로 이어져 있으면 인접하다고 합니다. 정점들의 수열 v0,v1,…,vkv_0, v_1, \dots, v_k (k≥0k \ge 0)에서 연속한 두 정점 vlv_l과 vl+1v_{l+1}이 모두 인접하면 이 수열을 경로라고 합니다. 이 경로는 v0v_0과 vkv_k를 잇습니다. 주어진 그래프에서는 모든 정점 쌍이 어떤 경로로 연결되어 있습니다.

색은 N+1N + 1개이며 0부터 NN까지 번호가 매겨져 있습니다. 색 NN은 특별하며 스핑크스의 색이라고 부릅니다. 정점 ii (0≤i<N0 \le i < N)의 색은 C[i]C[i]입니다. 여러 정점이 같은 색을 가질 수 있고, 어떤 색은 어떤 정점에도 배정되지 않을 수 있습니다. 스핑크스의 색을 가진 정점은 없으므로 0≤C[i]<N0 \le C[i] < N입니다.

경로 v0,v1,…,vkv_0, v_1, \dots, v_k (k≥0k \ge 0)의 모든 정점 색이 같으면 이 경로를 단색 경로라고 합니다. 즉 0≤l<k0 \le l < k인 모든 ll에 대해 C[vl]=C[vl+1]C[v_l] = C[v_{l+1}]입니다. 두 정점 pp와 qq (0≤p<N0 \le p < N, 0≤q<N0 \le q < N)는 단색 경로로 연결되어 있을 때, 그리고 그때에만 같은 단색 컴포넌트에 속합니다.

정점과 간선은 알고 있지만 정점의 색은 모릅니다. 재색칠 실험을 수행해 정점의 색을 알아내십시오.

재색칠 실험에서는 임의의 개수의 정점을 다시 칠할 수 있습니다. 먼저 크기가 NN인 배열 EE를 고릅니다. 각 E[i]E[i]는 −1-1 이상 NN 이하입니다. 정점 ii의 색 S[i]S[i]는 E[i]=−1E[i] = -1이면 C[i]C[i]이고, 그렇지 않으면 E[i]E[i]입니다. 그러면 스핑크스가 색 SS를 적용한 그래프의 단색 컴포넌트 개수를 알려줍니다. 새 색칠은 이 실험에만 적용되며, 실험이 끝나면 모든 정점은 원래 색으로 돌아갑니다. 재색칠에 스핑크스의 색도 쓸 수 있습니다.

최대 2 7502\,750번의 재색칠 실험으로 모든 정점의 색을 알아내십시오. 인접한 정점의 각 쌍이 같은 색인지 정확히 판단하면 부분 점수를 받을 수도 있습니다.

제한

  • 2≤N≤2502 \le N \le 250
  • N−1≤M≤N⋅(N−1)2N - 1 \le M \le \frac{N \cdot (N-1)}{2}
  • 각 jj (0≤j<M0 \le j < M)에 대해 0≤X[j]<Y[j]<N0 \le X[j] < Y[j] < N
  • 각 jj, kk (0≤j<k<M0 \le j < k < M)에 대해 X[j]≠X[k]X[j] \ne X[k] 또는 Y[j]≠Y[k]Y[j] \ne Y[k]
  • 모든 정점 쌍은 어떤 경로로 연결되어 있다.
  • 각 ii (0≤i<N0 \le i < N)에 대해 0≤C[i]<N0 \le C[i] < N

예제1

  1. 예제 1

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