CF579B Finding Team Member
题目描述
有一个名为 SnakeUp 的编程比赛,$2n$ 个人希望参加。为了参赛,人们需要恰好两人成队。你得到了每一组两人组合的实力值。这些实力值都是不同的。
每位参赛者都希望能找到一个实力组合最高的队友。也就是说,他会在还未配对的参赛者中,选择与自己组队实力值最高的人成为队友。更正式地说,当且仅当两个人 $A$ 和 $B$ 互为对方在剩余未配对参赛者中的最佳队友时,他们才能组队。
你能判断每个人最终的队友是谁吗?
输入格式
输入有 $2n$ 行。
第一行为整数 $n$($1\leq n\leq 400$)——需要组建的队伍数量。
第 $i$ 行($i>1$)包含 $i-1$ 个数 $a_{i1}$, $a_{i2}$, ..., $a_{i(i-1)}$。其中 $a_{ij}$($1\leq a_{ij} \leq 10^{6}$,所有 $a_{ij}$ 都互不相同)表示第 $i$ 个人和第 $j$ 个人组队的实力值(人员编号从 $1$ 开始)。
输出格式
输出一行,包含 $2n$ 个数字。第 $i$ 个数字表示第 $i$ 个人的队友编号。
说明/提示
在第一个样例中,选手 $1$ 和 $2$ 会成为队友,$3$ 和 $4$ 也是队友,所以第 $1,2,3,4$ 号选手的队友分别是 $2,1,4,3$。
由 ChatGPT 5 翻译