2015 ACM/ICPC Asia Regional Changchun Online

题意:n个池塘,删掉度数小于2的池塘,输出池塘数为奇数的连通块的池塘容量之和.

思路:两个dfs模拟就行了

 #include <iostream>
#include <cstdio>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <deque>
#include <vector>
#include <queue>
#include <string>
#include <cstring>
#include <map>
#include <stack>
#include <set>
#define LL long long
#define eps 1e-8
#define INF 0x3f3f3f3f
#define MAXN 10005
using namespace std;
vector<int> G[MAXN];
int father[MAXN], cnt[MAXN], du[MAXN];
LL v[MAXN];
bool rm[MAXN], vis[MAXN];
struct Node{
int pos, du;
Node(int pos = , int du = ) :pos(pos), du(du){};
};
bool compare(Node x, Node y){
return x.du < y.du;
}
int find(int x){
if (father[x] == x) return x;
father[x] = find(father[x]);
return father[x];
}
void dfs(int x, int p){
vis[x] = true;
father[x] = p;
for (int i = ; i < G[x].size(); i++){
int y = G[x][i];
if (rm[y] || vis[y]) continue;
dfs(y, p);
}
}
void dfs_rm(int x){
rm[x] = true;
for (int i = ; i < G[x].size(); i++){
du[G[x][i]]--;
if (du[G[x][i]] < && !rm[G[x][i]]) dfs_rm(G[x][i]);
}
}
Node node[MAXN];
int main()
{
//freopen("in.txt", "r", stdin);
int T;
int m, n;
scanf("%d", &T);
while (T--){
scanf("%d%d", &n, &m);
memset(du, , sizeof(du));
for (int i = ; i <= n; i++){
scanf("%I64d", &v[i]);
G[i].clear();
}
int x, y;
for (int i = ; i <= m; i++){
scanf("%d%d", &x, &y);
du[x]++;
du[y]++;
G[x].push_back(y);
G[y].push_back(x);
}
memset(rm, , sizeof(rm));
//sort(node + 1, node + n + 1, compare);
for (int i = ; i <= n; i++){
//int x = node[i].pos;
if (du[i] > || rm[i]) continue;
dfs_rm(i);
}
int p = ;
memset(father, , sizeof(father));
memset(vis, , sizeof(vis));
for (int i = ; i <= n; i++){
if (rm[i] || vis[i]) continue;
dfs(i, p);
p++;
}
memset(cnt, , sizeof(cnt));
for (int i = ; i <= n; i++){
if (rm[i]) continue;
//int x = find(i);
cnt[father[i]]++;
}
LL ans = ;
for (int i = ; i <= n; i++){
if (cnt[father[i]] & ){
ans += v[i];
}
}
printf("%I64d\n", ans);
}
}

HDU 5438 Ponds dfs模拟的更多相关文章

  1. hdu 5438 Ponds dfs

    Time Limit: 1500/1000 MS (Java/Others)     Memory Limit: 131072/131072 K (Java/Others) Problem Descr ...

  2. hdu 5438 Ponds(长春网络赛 拓扑+bfs)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5438 Ponds Time Limit: 1500/1000 MS (Java/Others)     ...

  3. HDU 5438 Ponds (DFS,并查集)

    题意:给定一个图,然后让你把边数为1的结点删除,然后求连通块结点数为奇的权值和. 析:这个题要注意,如果删除一些结点后,又形成了新的边数为1的结点,也应该要删除,这是坑,其他的,先用并查集判一下环,然 ...

  4. hdu 5438 Ponds 拓扑排序

    Ponds Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/contests/contest_showproblem ...

  5. HDU 5438 Ponds

    Ponds Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total Sub ...

  6. HDU - 5438 Ponds(拓扑排序删点+并查集判断连通分量)

    题目: 给出一个无向图,将图中度数小于等于1的点删掉,并删掉与他相连的点,直到不能在删为止,然后判断图中的各个连通分量,如果这个连通分量里边的点的个数是奇数,就把这些点的权值求和. 思路: 先用拓扑排 ...

  7. hdu5438 Ponds[DFS,STL vector二维数组]

    目录 题目地址 题干 代码和解释 参考 题目地址 hdu5438 题干 代码和解释 解答本题时参考了一篇代码较短的博客,比较有意思,使用了STL vector二维数组. 可以结合下面的示例代码理解: ...

  8. Vijos P1114 FBI树【DFS模拟,二叉树入门】

    描述 我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全“1”串称为I串,既含“0”又含“1”的串则称为F串. FBI树是一种二叉树1,它的结点类型也包括F结点,B结点和I结点三种 ...

  9. HDU.5692 Snacks ( DFS序 线段树维护最大值 )

    HDU.5692 Snacks ( DFS序 线段树维护最大值 ) 题意分析 给出一颗树,节点标号为0-n,每个节点有一定权值,并且规定0号为根节点.有两种操作:操作一为询问,给出一个节点x,求从0号 ...

随机推荐

  1. 详解:(cron , crontab , anacron)

    导读: 人类把时间做了切割,想象一条笔直的线永远向前,本来这条直线上什么都没有,但是人类根据时间的长短(单位)在这条直线上做了密密麻麻的标记(世纪-年-月-日-时-分-秒-纳秒......),通过这样 ...

  2. python学习笔记:第四天

    day04: 一.计算求值 num += 1 等价于 num = num + 1num -= 1 等价于 num = num - 1num *= 2 等价于 num = num * 2num /= 2 ...

  3. 网页里如何使用js屏蔽鼠标右击事件

    图片.png 在后台管理系统里面,遇到了这样的一个问题,右击ztree菜单,弹出修改界面,但是,现在确实这样的,右击默认弹出功能提示的框框,看上去似乎很影响自己想要的功能,只能禁用了,那么,网页里如何 ...

  4. javascript位操作符右移>>>的妙用

    var len=arr.length>>>0; 在arr.length为null或undefined的时间,强制转换为0;

  5. ESRI.ArcGIS.Controls.AxMapControl

    今天在写DLL时发现,直接引用ESRI.ArcGIS.Controls,发现AxMapControl的参数仍然不好用,后来发现,需要引用ESRI.ArcGIS.AxControls这个DLL.而且还需 ...

  6. iOS gzip解压

    1. 导入libz库(如:libz 1.2.5.dylib) 2. 引入头文件 #import "zlib.h" 3. 实现解压(输入输出都为NSData对象) -(NSData ...

  7. IP地址的规划和设计方法(二)

    五,IP地址规划方法           (1)IP地址规划的基本步骤           网络地址规划须要按下面6步进行:           a)推断用户对网络与主机数的需求:           ...

  8. sklearn.preprocessing OneHotEncoder——仅仅是数值型字段才可以,如果是字符类型字段则不能直接搞定

    >>> from sklearn.preprocessing import OneHotEncoder >>> enc = OneHotEncoder() > ...

  9. JMeter使用碰到的问题

    1.创建http请求 使用threadGroup-->add-->sampler--http request 2.使用计数器 使用threadGroup-->add-->con ...

  10. PHP+MySQL登录注册,完整版,详细注释

    纯手写打造. 下载地址:http://download.csdn.net/detail/qq_33599520/9779970 项目结构: 下面是代码: <!DOCTYPE html> & ...