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. sort排序到底怎么排序

    sort()方法 sort() 方法在适当的位置对数组的元素进行排序,并返回数组. <!DOCTYPE html> <html> <head> <meta c ...

  2. 【转】Geometry cannot have Z values

    http://blog.csdn.net/tweeenty/article/details/44246407 在对矢量要素类添加要素,进行赋几何信息时(FeatureBuffer.Shape = IG ...

  3. [Typescript] Installing Promise Type Definitions Using the lib Built-In Types

    To fix Promise is not recolized in TypeScript, we can choose to use a lib: npm i @types/es6-promise ...

  4. css 清楚浮动的8种方式

    清除浮动是每个 web前台设计师必须掌握的机能. css清除浮动大全,共8种方法. 浮动会使当前标签产生向上浮的效果,同一时候会影响到前后标签.父级标签的位置及 width height 属性.并且相 ...

  5. springMVC之拦截器

    有两种方法配置spring的拦截器 1. 实现接口: HandleInterceptor public class MyInterceptor1 implements HandlerIntercept ...

  6. 自己封装js组件 - 中级

    书接上文,上次弄了个基本版本的alert组件(其实就是十分钟前)但是很多功能都没有实现 没有关闭按钮 没有下面确定按钮 没有模态框 没有这那的 这次终极篇就都给它完善好弄个中级版本也是基本可用版本! ...

  7. Insert Data with C# Driver

    https://docs.mongodb.com/getting-started/csharp/insert/ OverView You can use the InsertOneAsync meth ...

  8. 5.array

    #include <iostream> #include <array> #include <algorithm> using namespace std; //a ...

  9. iOS: 零误差或极小误差的定时执行或延迟执行?

    问题如下: 节奏类游戏需要执行很多的跟音乐节拍相关的操作,并且为了保证节奏感,需要让操作跟节拍的关系十分紧密.对两者间隔要求不能超过0.02秒或更低. 目前使用了 GCD 中的 asyncAfter( ...

  10. PostgreSQL相关总结

    源码安装PostgreSQL总结 简明安装步骤(其中prefix指定PostgreSQL的安装目录,该目录与数据目录pgdata和PostgreSQL的源代码包目录均无关) yum -y instal ...