每个连通块对答案的贡献是固定的,如果连通块内有 n 个点,那么答案就是 n*(n-1)/2 ,所以我们可以用并查集维护出所有的连通块,然后维护出初始的答案,然后枚举剩下的所有为 0 的点变成 1 以后的情况,他会连接所有的相邻的 1 的连通块 #include <bits/stdc++.h> using namespace std; #define int long long const int INF = 1e18; const int N = 1e5 + 5; int __t = 1, n, u, v, sum, m, f[N], w[N], vis[N]; string s;...