V

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

요약
정점에 정수가 적힌 그래프에서 정점 하나와 이웃 두 개를 골라 두 이웃에 같은 k를 더하는 연산을 반복해 모든 값을 같게 만들 수 있는지 판정합니다.
난이도

어려움10점 중 8점

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

문제

NN개의 정점과 MM개의 간선으로 이루어진 그래프가 있습니다. ii번 정점에는 정수 a_ia\_i가 적혀 있습니다. 이 그래프에 다음과 같은 연산을 원하는 만큼 적용할 수 있습니다.

  • 정점 uu를 선택하고, uu와 간선으로 직접 연결된 서로 다른 두 정점 vv, ww를 선택합니다. 정수 kk를 정하여 a_va\_v를 a_v+ka\_v+k로, a_wa\_w를 a_w+ka\_w+k로 바꿉니다.

만약 그래프에서 위 조건에 따라 정점 uu, vv, ww를 선택할 수 없다면, 그 그래프에는 연산을 적용할 수 없습니다.

주어진 연산을 00번 이상 원하는 만큼 적용해서 모든 정점에 똑같은 수가 적히도록 만들 수 있는지 판정하세요.

입력

첫 번째 줄에 정점의 개수 NN과 간선의 개수 MM이 주어집니다. (2≤N≤100,0002\le N\le 100\\, 000, 1≤M≤200,0001\le M\le 200\\, 000)

두 번째 줄에 NN개의 정수가 공백으로 구분되어 주어집니다. ii번째 수는 ii번 정점에 처음 적힌 정수 a_ia\_i입니다. (−109≤a_i≤109-10^9\le a\_i\le 10^9)

다음 MM개의 줄에 걸쳐 그래프의 간선의 정보가 주어집니다. 각 줄에는 간선의 양 끝점을 나타내는 두 정수 uu, vv가 주어집니다. (1≤u,v≤N1\le u,v\le N, u≠vu\ne v)

간선의 양 끝점이 같은 경우는 없으며, 두 정점을 연결하는 간선은 최대 한 번 주어집니다. 입력으로 주어지는 그래프는 연결 그래프가 아닐 수 있습니다.

출력

모든 정점에 똑같은 수가 적히도록 할 수 있으면 YES, 아니라면 NO를 첫 번째 줄에 출력합니다.

예제4

  1. 예제 1

    입력
    5 6
    1 -3 5 -7 9
    1 2
    1 3
    2 3
    2 4
    3 5
    4 5
    
    예상 출력
    YES
    
  2. 예제 2

    입력
    7 6
    -7 3 9 4 -3 8 6
    1 2
    1 6
    3 4
    4 6
    5 6
    5 7
    
    예상 출력
    NO
    
  3. 예제 3

    입력
    4 3
    2 4 8 16
    1 2
    2 4
    1 4
    
    예상 출력
    YES
    
  4. 예제 4

    입력
    6 6
    0 1 2 3 4 5
    1 2
    2 3
    3 1
    4 5
    5 6
    6 4
    
    예상 출력
    NO