각 방향 간선에 [-F^2, F^2] 범위의 0이 아닌 정수를 배정해 모든 정점에서 나가는 합과 들어오는 합을 같게 만들고, 사전순으로 가장 작은 해를 구한다.
보통6그래프그리디수학완전 탐색아직 제출이 없습니다시간 제한5초메모리 제한512 MB친구 F명 사이에 소식을 돌리려고 한다. 누가 누구에게 말을 걸 수 있는지는 이미 알고 있다. 한 방향 관계가 P개 있고, 각 관계는 순서쌍 (Ai,Bi)로 주어진다. 이는 친구 Ai가 친구 Bi에게 말을 걸 수 있다는 뜻이다. 친구 Bi가 친구 Ai에게 말을 걸 수 있다는 뜻은 아니다. 다만 다른 순서쌍이 그 관계를 따로 나타내기도 한다.
입력에 나온 모든 순서쌍 (Ai,Bi)마다 친구 Ai가 친구 Bi에게 소식을 하나씩 전한다. 소식은 정수 하나로 나타낸다. 절댓값은 소식의 크기이고, 부호는 소식의 종류, 즉 좋은 소식인지 나쁜 소식인지를 나타낸다. 이 정수는 0이 될 수 없고(0이면 전할 소식이 없다), 절댓값이 F2보다 커질 수도 없다(그러면 소식이 너무 자극적이다). 순서쌍마다 값이 서로 달라도 된다.
친구들의 기분을 배려해서, 각 친구가 전하는 소식 값의 합과 그 친구가 받는 소식 값의 합이 같아야 한다. 전하는 소식이 하나도 없으면 그 합은 0이고, 받는 소식이 하나도 없으면 그 합도 0이다.
규칙을 모두 지키는 소식 값을 정할 수 있는지 판단하고, 정할 수 있으면 그 값을 구한다.
첫 줄에 테스트 케이스 수 T가 주어진다. 각 테스트 케이스의 첫 줄에는 친구 수 F와 순서쌍 수 P가 공백으로 구분되어 주어진다. 이어지는 P개 줄 중 i번째 줄에는 서로 다른 두 정수 Ai와 Bi가 주어지고, 친구 Ai가 친구 Bi에게 말을 걸 수 있다는 뜻이다. 친구 번호는 1부터 F까지다.
제한
각 테스트 케이스마다 Case #x: y 형식으로 한 줄씩 출력한다. x는 1부터 시작하는 테스트 케이스 번호다. 규칙을 지키는 배정이 없으면 y는 IMPOSSIBLE이다. 배정이 있으면 y는 공백으로 구분한 정수 P개이고, i번째 정수는 입력의 i번째 순서쌍에 대응하며 그 순서쌍의 앞 친구가 뒤 친구에게 전하는 소식 값이다. 각 정수는 0이 아니어야 하고 [−F2,F2] 안에 있어야 하며, 전체 값은 문제의 조건을 모두 만족해야 한다.
조건을 만족하는 배정이 여럿이면 사전순으로 가장 작은 하나만 출력한다. 수열 (y1,y2,…,yP)를 정수 수열로 보고 앞에서부터 비교해 먼저 작은 값이 나오는 쪽이 더 작다. 예를 들어 (−4,−4)는 (−4,−3)보다 작고, (−1,5)는 (1,−5)보다 작다.