#P3778. 「BalticOI 2022 Day2」Stranded Far From Home

「BalticOI 2022 Day2」Stranded Far From Home

题目描述

题目译自 BalticOI 2022 Day2「Stranded Far From Home

你就是不能放任不管……实际上你进行了闯入行动,并且最初所有事情就像计划一样进行。然而,你和你的助手之间的通讯情况变得十分糟糕(这是符合预期的,不是吗?)你没有安全返回吕贝克,而是被困在一个小岛上,并且你的潜艇没有燃料了。

为了及时返回参加 BOI 的颁奖仪式,你现在必须去岛的另一边坐船。然而,当地居民有着奇怪的传统。领带对他们来说非常重要,每个村庄都有自己喜欢的领带颜色,并且这个颜色可能会随着时间的推移而改变。

一份互联网上的报告显示,不同的村庄最初喜欢不同的领带颜色。不幸的是,这份报告已经相当过时了。从那时起,每个星期都有恰好一个村庄说服一个相邻的村庄喜欢和他们一样的领带颜色(如果两个村庄有公路直接相连,它们就是相邻的)。然而,只有当整个岛上喜欢第一个村庄的领带颜色不比喜欢第二个村庄的领带颜色的人少时,这种情况才会发生。足够长的时间过去了,所以现在所有的岛民都喜欢同样的领带颜色。

你基本可以肯定,如果你不戴符合他们喜好的领带,岛民就不会让你通过。因此,为了去渡口,你计划戴上岛民可能喜欢的每种颜色的领带。然而,戴太多的领带会让你看起来很可疑。编写一个程序,使用对岛屿的描述来计算你必须戴哪些领带。

输入格式

第一行包含两个整数 N,MN,MNN 表示村庄的个数,MM 表示岛上道路的条数。村庄从 11NN 编号。

接下来一行包含 NN 个整数 s1,,sNs_1,\ldots, s_Nsis_i 表示村庄 ii 的居民数。

接下来 MM 行,每行两个整数 a,b (1a,bN,ab)a,b\ (1\le a,b\le N,a\neq b),表示村庄 aabb 之间有一条道路。所有村庄通过道路直接或间接相连。

输出格式

输出一个长度为 NN0101 字符串。第 ii 位为 11 当且仅当有可能所有的岛民现在都喜欢村庄 ii 最初喜欢的领带颜色。

4 4
2 2 4 3
1 2
1 3
2 3
3 4

1110

4 3
4 2 2 1
1 2
3 2
4 1

1110

数据范围与提示

对于所有数据,满足 $1\le N\le 2\times 10^5,0\le M\le 2\times 10^5,1\le s_i\le 10^9$。

详细子任务附加限制及分值如下表所示:

子任务编号 附加限制 分值
11 N,M2 000N,M\le 2\ 000 1010
22 s1sNs_1\ge\ldots\ge s_N,并且每个满足 b>1b>1 的村 bb 都与恰好一个满足 a<ba<b 的村 aa 直接相连
33 aabb 直接相连当且仅当 ab=1| a-b|=1 1515
44 最多有 1010 种不同的村民人数 3030
55 无附加限制 3535