博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Uva 10765 鸽子和炸弹
阅读量:5349 次
发布时间:2019-06-15

本文共 1066 字,大约阅读时间需要 3 分钟。

题目链接:https://vjudge.net/contest/166461#problem/B

题意:

给一个无向图,求每一个点删除后,剩下的连通块的数目;

 

分析:

只有割顶被删掉后,连通分量才会改变,改变多少呢? 就是他这个割顶除 父亲结点,的其他孩子结点(及其子孙结点)是否返回到最早的祖先结点(lowv) <= low[u];再加上原图的连通块;

 

WA了很多次,错误地方有两个;

1、板子抄错了,low 函数没有用子孙结点更新;

2、即时不是割顶,也要加入结果中,就当是他删掉后,连通分量没有改变;

#include 
using namespace std;const int maxn = 10000+5;int n,m;bool cmp(pair
a,pair
b) { if(a.second == b.second) return a.first < b.first; return a.second > b.second;}struct Sol { int pre[maxn],iscut[maxn],dfs_clock,bcc_cnt,low[maxn]; vector
G[maxn]; vector
> ans; void init(int n) { for(int i=0;i<=n;i++) G[i].clear(); ans.clear(); } void AddEdge(int from,int to) { G[from].push_back(to); G[to].push_back(from); } int dfs(int u,int fa) { int lowu = pre[u] = ++dfs_clock; int child = 0,num = 0; for(int i=0; i
=pre[u]) { iscut[u] = true; num++; } } else if(pre[v]
View Code

 

转载于:https://www.cnblogs.com/TreeDream/p/6952476.html

你可能感兴趣的文章
给mysql数据库字段值拼接前缀或后缀。 concat()函数
查看>>
迷宫问题
查看>>
【FZSZ2017暑假提高组Day9】猜数游戏(number)
查看>>
泛型子类_属性类型_重写方法类型
查看>>
对闭包的理解
查看>>
练习10-1 使用递归函数计算1到n之和(10 分
查看>>
Oracle MySQL yaSSL 不明细节缓冲区溢出漏洞2
查看>>
Code Snippet
查看>>
zoj 1232 Adventure of Super Mario
查看>>
组合数学 UVa 11538 Chess Queen
查看>>
oracle job
查看>>
Redis常用命令
查看>>
[转载]电脑小绝技
查看>>
windos系统定时执行批处理文件(bat文件)
查看>>
thinkphp如何实现伪静态
查看>>
BZOJ 2243: [SDOI2011]染色( 树链剖分 )
查看>>
BZOJ 1925: [Sdoi2010]地精部落( dp )
查看>>
c++中的string常用函数用法总结!
查看>>
[DLX精确覆盖+打表] hdu 2518 Dominoes
查看>>
SuperMap iServerJava 6R扩展领域开发及压力测试---判断点在那个面内(1)
查看>>