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号 ...
随机推荐
- 【codeforces 128C】Games with Rectangle
[题目链接]:http://codeforces.com/problemset/problem/128/C [题意] 让你一层一层地在n*m的网格上画k个递进关系的长方形;(要求一个矩形是包含在另外一 ...
- 洛谷 P2818 天使的起誓
P2818 天使的起誓 题目描述 Tenshi非常幸运地被选为掌管智慧之匙的天使.在正式任职之前,她必须和其他新当选的天使一样要宣誓.宣誓仪式是每位天使各自表述自己的使命,他们的发言稿放在n个呈圆形排 ...
- 如何检查 Android 应用的内存使用情况
Android是为移动设备而设计的,所以应该关注应用的内存使用情况.尽管Android的Dalvik虚拟机会定期执行垃圾回收操作,但这也不意味着就可以忽视应用在何时何处进行内存分配和释放.为了提供良好 ...
- [学习笔记]HTTP协议
转自:www.cnblogs.com/li0803/archive/2008/11/03/1324746.html Author :Jeffrey 引言 HTTP是一个属于应用层的面向对象的协议,由于 ...
- 区间dp学习笔记
怎么办,膜你赛要挂惨了,下午我还在学区间\(dp\)! 不管怎么样,计划不能打乱\(4\)不\(4\).. 区间dp 模板 为啥我一开始就先弄模板呢?因为这东西看模板就能看懂... for(int i ...
- package & import
/* * package:声明源文件所在的包,写在程序的第一行. * 每“.”一次,表示一层文件目录. * 包名都要小写. * * import: * 1)显式导入指定包下的类或接口 * 2)写在包的 ...
- java操作文件的创建、删除、遍历
java操作文件的创建.删除.遍历: package test; import java.io.File; import java.io.IOException; import java.util.A ...
- 针对发起alter tablespace test begin backup 断电情况的处理
SQL> select tablespace_name from dba_tablespaces; TABLESPACE_NAME ------------------------------ ...
- Spring深入浅出(一)IOC的基本知识
Spring前言 Spring是一个企业级开发框架,为解决企业级项目开发过于复杂而创建的,框架的主要优势之一就是分层架构,允许开发者自主选择组件. Spring的两大核心机制是IOC(控制反转)和AO ...
- CheckException和RuntimeException
java文档中对RuntimeException的定义是: RuntimeException 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类. 可能在执行方法期间抛出但未被捕获的 Runt ...