#HT12698. 桥衡

桥衡

当前没有测试数据。

题目描述

给定一张 nn 个顶点、mm 条边的连通无向简单图。顶点 ii 上有一个标记 ci∈{0,1}c_i \in \{0,1\}。

一条边称为桥,当且仅当删除这条边后,图恰好分成两个连通分量。题目保证图中至少存在一座桥。

对于每个顶点 x (1≤x≤n)x\ (1 \le x \le n),其最大价值定义为独立进行如下过程能得到的最大值:

  1. 把 cxc_x 翻转,即 00 变为 11,11 变为 00;
  2. 选择图中的一座桥并删除;
  3. 设删除后两个连通分量中标记为 11 的顶点数分别为 pp 和 qq,得到价值 ∣p−q∣|p-q|。

请注意:不同 xx 的过程互相独立:计算下一个顶点时,所有标记恢复为输入中的初始状态。

现在你需要对于每个顶点求出其最大价值。

输入格式

第一行两个整数 n,mn,m。

第二行 nn 个整数 c1,c2,…,cnc_1,c_2,\dots,c_n。

接下来 mm 行,每行两个整数 u,vu,v,表示一条连接 u,vu,v 的无向边。

输出格式

输出一行 nn 个整数,第 xx 个整数表示翻转顶点 xx 后的最大价值。

样例

7 8
1 0 1 0 1 0 0
1 2
2 3
3 1
3 4
4 5
5 6
6 7
7 5
0 2 0 2 2 0 0

样例解释 图中的桥为 (3,4)(3,4) 和 (4,5)(4,5)。 例如翻转顶点 44 后共有四个 11。删除桥 (4,5)(4,5) 时,两侧分别有三个和一个 11,价值为 22。

数据规模与约定

  • 2≤n≤2×1052 \le n \le 2 \times 10^5;
  • n−1≤m≤4×105n-1 \le m \le 4 \times 10^5;
  • ci∈{0,1}c_i \in \{0,1\};
  • 输入图连通、无自环、无重边,并且至少含有一座桥;

共 20 个测试点,每个测试点 5 分。下表各行所列测试点共同满足对应的额外约束。下表中的“桥树”指把每个删除全部桥后得到的连通块缩成一个点,再用原图中的桥连接所得的树。

测试点编号 分值 额外约束
1∼21 \sim 2 1010 n,m≤200n,m \le 200
3∼53 \sim 5 1515 原图是一棵树,且 n≤2000n \le 2000
6∼86 \sim 8 原图是一棵树
9∼119 \sim 11 桥树是一条链
12∼1412 \sim 14 桥的数量不超过 20002000
15∼1715 \sim 17 n,m≤5×104n,m \le 5 \times 10^4
18∼2018 \sim 20 无额外约束

原题链接

原题链接