아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

나는 9999번 문제를 풀 수 있다

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

요약
모든 사람의 찬반 투표를 정해 의견이 다른 친구 관계 수와 소신과 다른 투표 수의 합을 최소화합니다.
난이도

보통10점 중 7점

유형
그래프
정답자
아직 제출이 없습니다

문제

민혁이가 9999번 문제를 풀 수 있는지 없는지를 두고 사람들이 투표를 한다. 대부분은 자신의 생각대로 투표하지만, 친구와 의견이 갈리는 것을 피하려고 자신의 생각과 반대로 투표하는 사람도 있다.

각 사람이 민혁이가 9999번 문제를 풀 수 있다고 보는지 없다고 보는지가 주어지고, 사람들 사이의 친구 관계도 주어진다.

투표가 끝나면 두 값을 더한다. 하나는 두 사람의 투표 결과가 서로 다른 친구 관계의 수이고, 다른 하나는 자신의 생각과 반대로 투표한 사람의 수이다. 이 합으로 나올 수 있는 최솟값을 구하는 프로그램을 작성하시오.

입력

입력은 여러 개의 테스트 케이스로 이루어진다.

각 테스트 케이스의 첫째 줄에 사람의 수 NN과 친구 관계의 수 MM이 주어진다. (2≤N≤3002 \le N \le 300, 0≤M≤N(N−1)/20 \le M \le N(N-1)/2)

둘째 줄에는 각 사람의 생각을 나타내는 NN개의 수가 1번 사람부터 순서대로 주어진다. 1은 민혁이가 9999번 문제를 풀 수 있다고 생각하는 사람, 0은 풀 수 없다고 생각하는 사람이다.

다음 MM개의 줄에는 친구 관계인 두 사람의 번호가 주어진다. 사람은 1번부터 NN번까지 번호가 매겨져 있다.

입력의 마지막 줄은 N=M=0N = M = 0이며, 이 줄은 처리하지 않는다.

출력

각 테스트 케이스마다, 두 사람의 투표 결과가 서로 다른 친구 관계의 수와 자신의 생각과 반대로 투표한 사람의 수를 더한 값의 최솟값을 한 줄에 출력한다.

힌트

예제의 첫 번째 테스트 케이스에서는 1번 사람만 자신의 생각과 반대로 투표하면 되고, 두 번째 테스트 케이스에서는 모두 자신의 생각대로 투표하면 된다.

예제1

  1. 예제 1

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