传送门:点击打开链接
题意:有p个池塘,每个池塘有权值,有m条无向边将池塘连接,现在要除掉一些池塘,除掉的池塘必须要有一条边与其相连,无自环,求删除完池塘后,求连通分量中的池塘个数是偶数的联通分量所有权值之和
思路:类似拓扑排序,通过度数把点加入到队列中,然后开始删边和删点,点被删除后标记一下,然后就是把所有的点扫一遍DFS,统计连通分量中点的个数和权值而已了
#include<map>
#include<set>
#include<cmath>
#include<stack>
#include<queue>
#include<cstdio>
#include<cctype>
#include<string>
#include<vector>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<functional>
#define fuck printf("fuck")
#define FIN freopen("input.txt","r",stdin)
#define FOUT freopen("output.txt","w+",stdout)
using namespace std;
typedef long long LL;
const int MX = 2e5