만드는 중입니다

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

이진 탐색

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

요약
정점마다 0 또는 1이 적힌 무방향 그래프에서 어떤 경로로도 만들 수 없는 가장 짧은 이진 문자열의 길이를 구합니다.
난이도

어려움10점 중 8점

유형
그래프, 동적 계획법, BFS
정답자
아직 제출이 없습니다

문제

무방향 그래프가 주어진다. 정점의 개수는 nn, 간선의 개수는 mm이다. 각 정점 vv에는 0 또는 1인 수 ava_v가 적혀 있다.

걷기는 그래프의 정점을 나열한 수열 v1v2…vkv_1v_2 \dots v_k이며, 연속한 두 정점이 간선으로 연결되어 있어야 한다. 이진 수열 s=s1s2…sks = s_1s_2 \dots s_k는 av1av2…avk=sa_{v_1} a_{v_2} \dots a_{v_k} = s를 만족하는 걷기 v1v2…vkv_1v_2 \dots v_k가 존재하면 걸을 수 있는 수열이다.

다시 말해, 그래프를 따라 걸으면서 방문한 정점의 수를 순서대로 적어 ss를 만들 수 있으면 걸을 수 있는 수열이다. 그림 B.1은 입력 예제 1을 나타내며, 길이가 3 이하인 이진 수열은 모두 걸을 수 있다.

걸을 수 없는 이진 수열 중 가장 짧은 것의 길이를 구하라.

입력

첫 줄에 정점의 개수 nn과 간선의 개수 mm이 주어진다 (1≤n≤3⋅1051 \leq n \leq 3 \cdot 10^5, 0≤m≤3⋅1050 \leq m \leq 3 \cdot 10^5).

둘째 줄에 nn개의 정수 a1,…,ana_1, \dots, a_n이 주어진다. 각 ava_v는 0 또는 1이다.

이어지는 mm개의 줄에는 정수 uu와 vv가 주어지며 (1≤u,v≤n1 \leq u, v \leq n, u≠vu \neq v), 두 정점 uu와 vv가 간선으로 연결되어 있음을 뜻한다. 같은 두 정점을 잇는 간선은 최대 하나이다.

출력

모든 이진 수열을 걸을 수 있으면 "infinity"를 출력한다. 그렇지 않으면 걸을 수 없는 이진 수열 중 가장 짧은 것의 길이를 출력한다.

예제3

  1. 예제 1

    입력
    4 4
    0 0 1 1
    1 2
    1 3
    2 3
    3 4
    
    예상 출력
    4
    
  2. 예제 2

    입력
    6 7
    0 0 1 1 0 1
    1 2
    3 1
    1 4
    2 3
    4 2
    3 4
    5 6
    
    예상 출력
    infinity
    
  3. 예제 3

    입력
    1 0
    0
    
    예상 출력
    1