만드는 중입니다

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

동물원 관리

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

요약
동물들이 터널을 따라 여러 칸이 동시에 순환하며 움직여서 시작 배치를 목표 배치로 바꿀 수 있는지 판정합니다.
난이도

보통10점 중 7점

유형
그래프, DFS, 해시맵
정답자
아직 제출이 없습니다

문제

동물원을 관리할 때 동물을 우리 사이로 옮기고 싶을 때가 있다. 예를 들어 얼룩말은 지금 펭귄이 쓰는 더 넓은 우리를 좋아할 수 있고, 펭귄은 코알라가 사는 더 추운 우리로 가고 싶을 수 있다. 코알라는 유칼립투스를 채울 수 있는 빈 우리로 간다. 그래서 먼저 코알라를 옮겨 추운 우리를 비우고, 펭귄을 옮긴 다음, 마지막으로 얼룩말을 옮긴다.

동물은 우리를 잇는 특수 터널로만 이동한다. 겁을 먹거나 달아나다 다칠 수 있으므로 동물이 바깥으로 나가서는 안 된다.

이제 모든 우리가 가득 차 있어서 동물을 옮기기가 훨씬 어렵다. 예를 들어 코알라가 얼룩말의 옛 우리로 가야 한다면, 먼저 움직일 수 있는 동물이 하나도 없다. 대신 동물들을 동시에 옮긴다. 얼룩말, 코알라, 펭귄이 각자 다른 터널로 함께 출발해 새 우리에 함께 도착하므로 서로 만나지 않는다. 연결된 두 우리의 동물을 그냥 맞바꿀 수는 없다. 터널 안에서 만나 겁을 먹기 때문이다.

한 번의 이동에서 동물 집합을 골라, 각 동물을 터널로 연결된 인접한 우리로 옮길 수 있다. 단, 그 우리에 있던 동물도 같은 이동에서 함께 움직여야 한다. 같은 이동에서 한 터널을 두 번 이상 쓸 수 없다. 이런 이동을 여러 번 거쳐 원하는 배치를 만들 수 있는가?

입력

첫 줄에 우리의 수 nn (1≤n≤4⋅1051 \le n \le 4 \cdot 10^5)과 터널의 수 mm (0≤m≤4⋅1050 \le m \le 4 \cdot 10^5)이 주어진다. 이어지는 nn개 줄에는 두 정수 bib_i (1≤bi≤1061 \le b_i \le 10^6)와 eie_i (1≤ei≤1061 \le e_i \le 10^6)가 주어진다. bib_i는 우리 ii에 처음 있는 동물의 종류이고, eie_i는 모든 이동이 끝난 뒤 우리 ii에 있기를 원하는 동물의 종류이다. e1,…,ene_1, \dots, e_n은 b1,…,bnb_1, \dots, b_n의 순열임이 보장된다. 이어지는 mm개 줄에는 두 정수 xx와 yy (1≤x<y≤n1 \le x < y \le n)가 주어지며, 우리 xx와 yy가 양방향 터널로 연결되어 있음을 뜻한다. 두 우리를 잇는 터널은 하나를 넘지 않는다.

출력

모든 우리에 원하는 동물이 들어가도록 동물을 옮길 수 있으면 possible을 출력한다. 그렇지 않으면 impossible을 출력한다.

예제4

  1. 예제 1

    입력
    3 3
    1 4
    4 7
    7 1
    1 2
    2 3
    1 3
    
    예상 출력
    possible
    
  2. 예제 2

    입력
    2 1
    1 2
    2 1
    1 2
    
    예상 출력
    impossible
    
  3. 예제 3

    입력
    5 6
    10 40
    20 30
    30 50
    40 20
    50 10
    1 2
    2 3
    1 3
    3 4
    3 5
    4 5
    
    예상 출력
    possible
    
  4. 예제 4

    입력
    4 4
    10 10
    10 20
    20 10
    20 20
    1 2
    2 3
    3 4
    1 4
    
    예상 출력
    impossible