题目
农夫约翰坚信快乐的奶牛会产出更多的牛奶,因此他在谷仓中安装了一个巨大的迪斯科球,并计划教他的奶牛跳舞!
在查阅了一些牛的流行舞蹈后,约翰决定教他的奶牛“洗牌舞”。
洗牌舞是由他的 N 只奶牛按一定顺序排成一行,然后连续执行三次“洗牌”,每次“洗牌”都可能会使奶牛重新排序。
为了让奶牛们更容易找到自己所处的位置,约翰用数字 1∼N 对一行中奶牛所在的位置进行了标记,一行中第一头奶牛处于位置 1,第二头奶牛处于位置 2,以此类推,直到位置 N。
每次“洗牌”用 N 个数字 $a_1,a_2,…,a_N$ 来描述,处于位置 i 的奶牛在一次“洗牌”过后,需要移动至位置 $a_i$(因此,每个 $a_i$ 在 1…N 范围内)。
幸运的是,所有 $a_i$ 都是互不相同的,因此,不会存在多头奶牛在洗牌结束后移动到同一个位置的情况。
约翰的每头奶牛都有一个属于自己的唯一 7 位整数 ID (不含前导 0)。
给定你三轮“洗牌”过后的奶牛排列顺序,请你求出奶牛们的初始排列顺序。
代码
import java.util.*;
public class Main {
static int N = 100010;
static int n;
static TreeMap<Integer, Integer> m = new TreeMap<Integer, Integer>();
static int[] b = new int[1000];
public static void main(String[] args) {
Scanner inScanner = new Scanner(System.in);
n = inScanner.nextInt();
for(int i = 1; i <= n; i ++)
m.put(inScanner.nextInt(), i);
for(int i = 1; i <= n; i ++)
{
int k = i;
int j = 3;
while(j --> 0)
k = m.get(k);
b[k] = inScanner.nextInt();
}
for(int i = 1; i <= n; i ++)
System.out.println(b[i]);
inScanner.close();
}
}