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

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

실험

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

요약
사용자들의 그룹 소속과 서로 반대 성향인 사용자 쌍이 주어질 때, 각 그룹에서 최대 한 명만 뽑으면서 모든 반대 쌍에서 적어도 한 명을 선택하는 집합이 존재하는지 판정한다.
난이도

어려움10점 중 8점

유형
그래프, 시뮬레이션, 그리디, 구현
정답자
아직 제출이 없습니다

문제

선린인터넷주식회사에서 데이터 사이언티스트로 일하는 준원이는 회사의 새로운 서비스의 베타 테스터를 선정하려 한다.

베타 테스터의 후보가 되는 유저는 총 NN명이다. NN명의 유저는 그간의 서비스 사용 기록을 바탕으로 총 MM개의 유저 그룹으로 나뉘는데, 각 유저는 00개 이상 MM개 이하의 유저 그룹에 속한다. (M=0M = 0일 수도 있다. 이 경우 아무 그룹도 없다고 생각하면 된다.)

준원이가 이들 NN명의 유저 가운데 몇 명의 베타 테스터를 뽑을 때 다음 조건을 반드시 만족해야 한다.

  • 조건 1: 하나의 유저 그룹에서는 최대 한 명의 베타 테스터만 뽑을 수 있다.
  • 조건 2: 서로 반대되는 성향의 두 유저 가운데 최소 한 명은 베타 테스터로 뽑아야 한다.
    • 서로 반대되는 성향을 가지는 유저의 쌍들은 입력을 통해 주어진다.

준원이를 도와 베타 테스터를 선정하자.

입력

입력의 첫 줄에는 네 정수 NN, MM, AA, BB가 주어진다.

이후 AA개의 줄에 걸쳐 두 정수 ii, jj가 주어진다. 이는 유저 ii가 그룹 jj에 속함을 의미하며, 1≤i≤N1 \le i \le N, 1≤j≤M1 \le j \le M을 만족한다.

이후 BB개의 줄에 걸쳐 두 정수 ii, jj가 주어진다. 이는 유저 ii와 유저 jj의 성향이 반대됨을 의미하며, 1≤i,j≤N1 \le i, j \le N, i≠ji \neq j를 만족한다.

출력

조건들을 만족하게 준원이가 베타 테스터를 선정할 수 있으면 "TAK", 아니면 "NIE"를 출력하라.

제한

  • 1≤N≤1051 \le N \le 10^5
  • 1≤M≤1051 \le M \le 10^5
  • 0≤A≤5×1050 \le A \le 5 \times 10^5
  • 0≤B≤2×1050 \le B \le 2 \times 10^5

예제2

  1. 예제 1

    입력
    2 3 0 0
    
    예상 출력
    TAK
    
  2. 예제 2

    입력
    5 1 5 10
    1 1
    2 1
    3 1
    4 1
    5 1
    2 1
    3 1
    2 3
    1 4
    4 2
    4 3
    1 5
    2 5
    3 5
    5 4
    
    예상 출력
    NIE