HDU 5438 Ponds dfs模拟
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模拟的更多相关文章
- hdu 5438 Ponds dfs
Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Problem Descr ...
- hdu 5438 Ponds(长春网络赛 拓扑+bfs)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5438 Ponds Time Limit: 1500/1000 MS (Java/Others) ...
- HDU 5438 Ponds (DFS,并查集)
题意:给定一个图,然后让你把边数为1的结点删除,然后求连通块结点数为奇的权值和. 析:这个题要注意,如果删除一些结点后,又形成了新的边数为1的结点,也应该要删除,这是坑,其他的,先用并查集判一下环,然 ...
- hdu 5438 Ponds 拓扑排序
Ponds Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/contests/contest_showproblem ...
- HDU 5438 Ponds
Ponds Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Sub ...
- HDU - 5438 Ponds(拓扑排序删点+并查集判断连通分量)
题目: 给出一个无向图,将图中度数小于等于1的点删掉,并删掉与他相连的点,直到不能在删为止,然后判断图中的各个连通分量,如果这个连通分量里边的点的个数是奇数,就把这些点的权值求和. 思路: 先用拓扑排 ...
- hdu5438 Ponds[DFS,STL vector二维数组]
目录 题目地址 题干 代码和解释 参考 题目地址 hdu5438 题干 代码和解释 解答本题时参考了一篇代码较短的博客,比较有意思,使用了STL vector二维数组. 可以结合下面的示例代码理解: ...
- Vijos P1114 FBI树【DFS模拟,二叉树入门】
描述 我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全“1”串称为I串,既含“0”又含“1”的串则称为F串. FBI树是一种二叉树1,它的结点类型也包括F结点,B结点和I结点三种 ...
- HDU.5692 Snacks ( DFS序 线段树维护最大值 )
HDU.5692 Snacks ( DFS序 线段树维护最大值 ) 题意分析 给出一颗树,节点标号为0-n,每个节点有一定权值,并且规定0号为根节点.有两种操作:操作一为询问,给出一个节点x,求从0号 ...
随机推荐
- 紫书 习题8-7 UVa 11925(构造法, 不需逆向)
这道题的意思紫书上是错误的-- 难怪一开始我非常奇怪为什么第二个样例输出的是2, 按照紫书上的意思应该是22 然后就不管了,先写, 然后就WA了. 然后看了https://blog.csdn.net/ ...
- 斗地主算法的设计与实现(一)--项目介绍&如何定义和构造一张牌
大学期间,我在别人的基础上,写了一个简易的斗地主程序. 主要实现了面向对象设计,洗牌.发牌.判断牌型.比较牌的大小.游戏规则等算法. 通过这个斗地主小项目的练习,提高了我的面向对象设计能力,加深了对算 ...
- 2015 Multi-University Training Contest 4 hdu 5335 Walk Out
Walk Out Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Su ...
- Jquery-基础知识点
jquery 包含的功能 1.HTML元素选取.操作 2.CSS操作 3.HTML事件函数 4.Javascript特效和动画 5.HTML DOM遍历和修改 6.AJAX 7. Untilities ...
- Qt之图形(组合)
简述 使用QPainter绘制图形或者图像时,在重叠区域使用组合模式(Composition_mode).在绘图设备上通过组合模式使用QImage时,必须使用Format_ARGB32_Premult ...
- Precision and recall From Wiki
Precision.全部推断为正样本的数量里面,有多少是真正的正样本.就是精确率 Recall.所有的正样本里面,检測到了多少真正的正样本,又称查全率.即所有正样本查找到了多少的比率.
- ASIHTTPRequest 框架的导入
刚接触ios 对一切都不熟悉 记录一下ASIHTTPRequest 框架的导入 步骤 以便日后再用 1.首先下载ASIHTTPRequest:点击下载 2.在project中导入下面文件: 导入方式 ...
- cocos2d-x3.0 关于CCAnimate 的一些资料
CCAnimate 能够理解为一个动画播放器, CCAnimation 能够理解为一个动画内容.它须要播放器才干播放动画. 与它们相关的一些类例如以下 SpriteFrameCache 精灵帧缓存 ...
- php中file_get_contents如何读取大容量文件
php中file_get_contents如何读取大容量文件 一.总结 一句话总结:使用file_get_contents()进行分段读取,file_get_contents()函数可以分段读取 1. ...
- MySQL优化-存储引擎
MySQL优化-存储引擎 标签(空格分隔): mysql 存储引擎 查看存储引擎 show engines Myisam: 表锁 全文索引 Innodb: 行锁 事物 外键 Memory: 内存存储引 ...