P12748 [POI 2017 R2] 体育比赛 Sports competition
题目背景
翻译来自于 [LibreOJ](https://loj.ac/p/5056)。
题目描述
**题目译自 [XXIV Olimpiada Informatyczna — II etap](https://sio2.mimuw.edu.pl/c/oi24-2/dashboard/) [Zawody sportowe](https://szkopul.edu.pl/problemset/problem/fYzoFHo_2JRG4FQSt5UPRpn5/statement/)**
在一次体育比赛中,来自 $n$ 个不同国家的 $n$ 名选手展开角逐。每位选手由本国的 $n$ 名记者之一进行报道,记者会说明自家选手的名次。然而,部分记者因情绪激动,未能准确记住选手的名次,只能提供选手可能的两个名次。
请根据记者的报道,判断是否能唯一确定比赛的排名(不允许并列名次)。若可以,输出排名;否则,计算可能的排名数量。
输入格式
第一行包含一个正整数 $n$,表示参赛国家的数量。
接下来的 $n$ 行描述记者的报道,第 $i$ 行表示第 $i$ 国记者的报道:
- 若记者确定选手名次,报道为字母 `T` 后跟一个整数 $a_i$ $(1 \leq a_i \leq n)$,表示第 $i$ 国选手的名次。
- 若记者不确定,报道为字母 `N` 后跟两个不同整数 $a_{i,1}, a_{i,2}$ $(1 \leq a_{i,j} \leq n)$,表示第 $i$ 国选手名次为 $a_{i,1}$ 或 $a_{i,2}$。
输出格式
若记者报道能唯一确定比赛排名,输出第一行包含字符串 `TAK`,接下来的 $n$ 行每行一个整数,第 $i$ 行表示第 $i$ 国选手的名次。
若报道矛盾或排名不唯一,输出第一行包含字符串 `NIE`,第二行输出可能排名的数量对 $1000000007$ 取模的结果。
说明/提示
**附加样例**
1. $n=5$,每位记者不确定,报道矛盾。
2. $n=10$,每位记者不确定,有 $32$ 种可能排名。
3. $n=1000000$,每位记者确定($a_i=i$),答案为 `TAK`。
详细子任务附加限制及分值如下表所示。
| 子任务 | 附加限制 | 分值 |
| :---: | :--: | :---: |
| $1$ | $n \leq 10$ | $20$ |
| $2$ | $n \leq 2000$ | $30$ |
| $3$ | $n \leq 1000000$,排名唯一 | $20$ |
| $4$ | $n \leq 1000000$ | $30$ |