각 방향 간선에 0이 아닌 정숫값을 부여해 모든 친구의 보낸 값 합과 받은 값 합이 같아지도록 하며, 문제가 지정한 DFS 순환 절차가 만드는 값을 그대로 출력한다.
어려움8그래프DFS구현시뮬레이션아직 제출이 없습니다시간 제한5초메모리 제한512 MB친구 F명에게 소식을 전하려고 한다. 누가 누구에게 말을 걸 수 있는지는 이미 알고 있다. 일방향 관계가 P개 있고, i번째 관계는 순서쌍 (Ai,Bi)로 주어진다. 이는 친구 Ai가 친구 Bi에게 말을 걸 수 있다는 뜻이다. 친구 Bi가 친구 Ai에게 말을 걸 수 있다는 뜻은 아니다. 다만 다른 순서쌍이 그 관계를 따로 나타낼 수는 있다.
주어진 순서쌍 (Ai,Bi)마다 친구 Ai는 친구 Bi에게 소식을 하나 전해야 한다. 소식은 정수 하나로 나타낸다. 절댓값은 소식의 크기이고, 부호는 소식의 종류를 나타낸다. 정수는 0이 될 수 없고(0이면 전할 소식이 없다), 절댓값이 F2을 넘을 수도 없다(그만큼 자극적인 소식은 곤란하다). 순서쌍마다 정수는 서로 달라도 된다.
친구들의 기분을 배려해서, 친구마다 그 친구가 전한 모든 소식 값의 합과 그 친구가 받은 모든 소식 값의 합이 같아야 한다. 전한 소식이 하나도 없으면 그 합은 0이고, 받은 소식이 하나도 없으면 그 합도 0이다.
규칙을 모두 지키는 소식 값을 찾거나, 그런 값이 없음을 판정하라.
첫 줄에 테스트 케이스의 수 T가 주어진다. 이어서 테스트 케이스가 T개 주어진다. 각 테스트 케이스의 첫 줄에는 친구의 수 F와 순서쌍의 수 P가 공백을 사이에 두고 주어진다. 이어지는 P개의 줄 중 i번째 줄에는 서로 다른 두 정수 Ai와 Bi가 주어지며, 친구 Ai가 친구 Bi에게 말을 걸 수 있다는 뜻이다. 친구는 1번부터 F번까지 번호가 붙어 있다.
제한
각 테스트 케이스마다 Case #x: y 형식으로 한 줄씩 출력한다. x는 1부터 시작하는 테스트 케이스 번호이고, y는 다음 둘 중 하나다.
규칙을 지키는 배정이 없으면 y는 IMPOSSIBLE이다.
배정이 있으면 y는 공백 하나로 구분한 정수 P개이고, i번째 정수는 친구 Ai가 친구 Bi에게 전하는 소식 값이다. 규칙을 지키는 배정은 여러 가지이므로, 다음 절차가 만드는 배정을 그대로 출력한다.
규칙을 지키는 배정이 있는 경우, 이 절차가 만드는 값은 항상 0이 아니고 [−F2,F2] 안에 있다.
소식을 하나도 전하지 않고 받지도 않는 친구가 있어도 규칙은 지켜진다.
어떤 친구가 소식을 받기만 하고 아무에게도 전하지 못하면 그 테스트 케이스는 IMPOSSIBLE이다. 소식 값은 0이 될 수 없어서 받은 값의 합이 0이 아닌데, 전한 값의 합은 0이기 때문이다.
절댓값이 F2을 넘는 값은 다른 규칙을 모두 지켜도 쓸 수 없다.
음수 값을 하나도 쓰지 않으면 풀리지 않는 경우도 있다.