题目描述
用户 ainta 有一个排列 p1,p2,...,pn。新年到了,他希望把他的排列变得尽可能漂亮。
当且仅当存在整数 k(1≤k≤n)使 a1=b1,a2=b2,…,ak−1=bk−1 和 ak<bk 都成立,排列 a1,a2,...,an 比 b1,b2,...,bn 更漂亮。
排列 p 非常敏感,只可以通过交换两个不同的元素来修改它。但是交换两个不同的元素比你想象得要难。给出一个 n×n 的二进制矩阵 A,当且仅当 Ai,j=1 时,用户 ainta 可以交换两个元素 pi,pj (1≤i,j≤n,i=j) 的值。
给定排列 p 和矩阵 A ,用户 ainta 想知道他能得到的最漂亮的排列。
输入格式
第一行包含一个整数 n(1≤n≤300),即排列 p 的长度。
第二行包含 n 个由空格分开的整数 p1,p2,...,pn ,保证每个不同的整数只出现一次。
接下来 n 行描述矩阵 A 。保证 Ai,j=Aj,i(1≤i<j≤n)和 Ai,i=0(1≤i≤n)。
输出格式
一行 n 个空格分隔的整数,表示得到的最漂亮的排列。
7
5 2 4 3 6 7 1
0001001
0000000
0000010
1000001
0000000
0010000
1001000
1 2 4 3 6 7 5
5
4 2 1 5 3
00100
00011
10010
01101
01010
1 2 3 4 5