首页 > 试题广场 >

小欧皇

[编程题]小欧皇
  • 热度指数:2228 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}小欧正在扮演一个中世纪的皇帝。地图上有 n 个城市,其中有 m 条道路,每条道路连接了两个城市。
\hspace{15pt}小欧占领了其中一些城市。如果两个城市可以通过若干条道路互相到达,且这些道路经过的城市都是小欧占领的,那么这两个城市之间就可以通过经商获得收益 1。请注意,每两个城市之间的收益只会被计算一次。
\hspace{15pt}现在,小欧准备占领一个未被占领的城市,使得总收益最大化。你能帮帮她吗?

输入描述:
\hspace{15pt}第一行输入两个正整数 n,m \left( 1 \leqq n,m \leqq 10^5\right),代表城市数量和道路数量。
\hspace{15pt}第二行输入一个长度为 n 的 01 串。第 i 个字符为 '0' 代表小欧未占领该城市,'1' 代表小欧已经占领了该城市。
\hspace{15pt}接下来的 m 行,每行输入两个正整数 u,v \left(1 \leqq u,v \leqq n, u \neq v\right),代表城市 u 和城市 v 有一条道路连接。


输出描述:
\hspace{15pt}输出一行两个空格隔开的整数,第一个整数代表占领的城市编号,第二个整数代表占领后的收益。
\hspace{15pt}请保证收益的最大化。如果有多种方案收益最大,小欧会优先占领编号最小的城市。
示例1

输入

5 5
01010
1 2
1 3
1 4
4 5
1 5

输出

1 3

说明

占领 1 号城市后,总收益为 3。
1 号城市和 2 号城市经商,1 号城市和 4 号城市经商,2 号城市和 4 号城市经商。

这道题你会答吗?花几分钟告诉大家答案吧!