#P2135. 2024.9.26-阿里云(研发)-第3题-小塔的节点树

2024.9.26-阿里云(研发)-第3题-小塔的节点树

题目内容

小塔有一棵nn个节点的树,11号节点是树的根节点。ii号节点的权值为aia_i,如果边(u,vu,v)的两个端点权值的质因子个数相同,那么这条边需要被染色。例如,66有两个质因子,分别是22343,4只有一个质因子22。 小塔每次可以选择一个点,将这个点到根节点的所有边染色,请问最少需要操作多少次,才能使得所有需要被染色的边都被染色。

输入描述

第一行输入一个整数nn(2n<1052≤n<10^5),表示树的节点数。 第二行输入nn个整数a1,a2,...,ana_1,a_2,...,a_n(1ai1071≤a_i≤10^7),表示每个节点的权值。 此后n1n-1行,第ii行输入两个整数uiu_iviv_i(1ui,vin;uivi1≤u_i,vi≤n; u_i≠v_i)表示树上第ii条边连接节点uiu_iviv_i。保证树联通,没有重边。

输出描述

先输出一个整数,表示最少需要操作的次数。 如果需要的操作次数不为零,接下来一行,从小到大输出若干整数,表示每次操作选择的点。

样例1

输入

6
2 2 3 4 30 6
1 2
2 3
2 4
1 5
5 6

输出

2
3 4

说明

66个点的权值质因子个数分别为[1,1,1,1,3,21,1,1,1,3,2],所以需要染色的边为(1,21,2),(2,32,3),(2,42,4),最少需要操作22次,先选择33号点,再选择44号点。