만드는 중입니다

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

이웃 정점 쌍으로 값 맞추기

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

요약
정점 하나의 두 이웃에 같은 정수 k를 더하는 연산을 반복해서 모든 정점의 값을 같게 만들 수 있는지 판정합니다.
난이도

보통10점 중 7점

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

문제

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를 선택할 수 없다면, 그 그래프에는 연산을 적용할 수 없습니다.

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

입력

첫 번째 줄에 정점의 개수 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