B - Rikka with Graph HDU - 5631 (并查集+思维)
Yuta has a non-direct graph with n vertices and n+1 edges. Rikka can choose some of the edges (at least one) and delete them from the graph.
Yuta wants to know the number of the ways to choose the edges in order to make the remaining graph connected.
It is too difficult for Rikka. Can you help her?
InputThe first line contains a number T(T≤30)T(T≤30)——The number of the testcases.
For each testcase, the first line contains a number n(n≤100)n(n≤100).
Then n+1 lines follow. Each line contains two numbers u,vu,v , which means there is an edge between u and v.OutputFor each testcase, print a single number.Sample Input
1
3
1 2
2 3
3 1
1 3
Sample Output
9
题意:给出n个点,和n+1条边,问可以有多少种去掉边的方法,使去掉边后整个图仍然是连通的
题解:使用并查集来判断是否连通,再通过逐个枚举去掉一条边和去掉两条边的情况,判断整个图是否连通,如果是则ans++ 否则ans不变
#include<iostream>
#include<cstdio> using namespace std; int s[105], e[105];
int t, n;
int a, b;
int pre[105]; int Find(int r) {
return pre[r] = pre[r] == r ? r : Find(pre[r]);
} int check(int a, int b) {
for (int i = 1; i <= n; i++) {
pre[i] = i;
}
for (int i = 0; i <= n; i++) {
//与a , b 相连的边直接去掉,查看是否还能够全部联通
if (i == a || i == b)
continue;
int f1 = Find(s[i]), f2 = Find(e[i]);
if (f1 != f2)
pre[f1] = f2;
}
int cnt = 0;
for (int i = 1; i <= n; i++) {
if (pre[i] == i)
cnt++;
if (cnt > 1)
return 0;
}
return 1;
}
int main() {
cin >> t;
while (t--) {
cin >> n;
for (int i = 0; i <= n; i++) {
cin >> s[i] >> e[i];
}
int ans = 0;
//逐个查找,i = j 代表是取一条边,不等代表是取两条边
//要想全部联通至少需要n-1条边
for (int i = 0; i <= n; i++) {
for (int j = i; j <= n; j++) {
ans += check(i, j);
}
}
cout << ans << endl;
}
return 0;
}
B - Rikka with Graph HDU - 5631 (并查集+思维)的更多相关文章
- hdu 4514 并查集+树形dp
湫湫系列故事——设计风景线 Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Tot ...
- HDU 3926 并查集 图同构简单判断 STL
给出两个图,问你是不是同构的... 直接通过并查集建图,暴力用SET判断下子节点个数就行了. /** @Date : 2017-09-22 16:13:42 * @FileName: HDU 3926 ...
- HDU 4496 并查集 逆向思维
给你n个点m条边,保证已经是个连通图,问每次按顺序去掉给定的一条边,当前的连通块数量. 与其正过来思考当前这边会不会是桥,不如倒过来在n个点即n个连通块下建图,检查其连通性,就能知道个数了 /** @ ...
- 2015多校第6场 HDU 5354 Bipartite Graph CDQ,并查集
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5354 题意:求删去每个点后图是否存在奇环(n,m<=1e5) 解法:很经典的套路,和这题一样:h ...
- HDU 1232 并查集/dfs
原题: http://acm.hdu.edu.cn/showproblem.php?pid=1232 我的第一道并查集题目,刚刚学会,我是照着<啊哈算法>这本书学会的,感觉非常通俗易懂,另 ...
- HDU 2860 并查集
http://acm.hdu.edu.cn/showproblem.php?pid=2860 n个旅,k个兵,m条指令 AP 让战斗力为x的加入y旅 MG x旅y旅合并为x旅 GT 报告x旅的战斗力 ...
- Mr. Kitayuta's Colorful Graph 多维并查集
Mr. Kitayuta's Colorful Graph 并查集不仅可以用于一维,也可以用于高维. 此题的大意是10W个点10W条边(有多种颜色),10W个询问:任意两个节点之间可以由几条相同颜色的 ...
- hdu_5354_Bipartite Graph(cdq分治+并查集判二分图)
题目链接:hdu_5354_Bipartite Graph 题意: 给你一个由无向边连接的图,问对于每一个点来说,如果删除这个点,剩下的点能不能构成一个二分图. 题解: 如果每次排除一个点然后去DFS ...
- hdu 1198 (并查集 or dfs) Farm Irrigation
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1198 有题目图11种土地块,块中的绿色线条为土地块中修好的水渠,现在一片土地由上述的各种土地块组成,需要浇 ...
随机推荐
- go的循环
目录 go的循环 一.语法 二.语法简写 1.省略第一部分 2.省略第二部分 3.省略第三部分 4.全省略:死循环 5.终极写法,简洁变形 go的循环 Go中只有for循环,没有while循环.因为w ...
- JavaScript:什么是回调?
翻译练习 原博客地址:JavaScript: What the heck is a Callback? 在6分钟内通过简单的例子学习和理解回调的基本原理. 什么是回调? 简单地说:回调就是一个在另一个 ...
- PCA主成分分析的矩阵原理
[前言]主成分分析(PCA)实现一般有两种,一种是对于方阵用特征值分解去实现的,一种是对于不是方阵的用奇异值(SVD)分解去实现的. 一.特征值 特征值很好理解,特征值和特征向量代表了一个矩阵最鲜明的 ...
- 权益满满 | PGConf.Asia2020大会诚邀赞助商!携手走向更大世界!
转: 权益满满 | PGConf.Asia2020大会诚邀赞助商!携手走向更大世界! 关于PostgresConf.CN&PGConf.Asia2020大会作为全球最大.最知名的PG序列会议, ...
- 机器学习系统或者SysML&DL笔记(一)
前言 在使用过TVM.TensorRT等优秀的机器学习编译优化系统以及Pytorch.Keras等深度学习框架后,总觉得有必要从理论上对这些系统进行一些分析,虽然说在实践中学习是最快最直接的(指哪儿打 ...
- 面向青铜的java自学路线
有经验的人都知道,java还是需要一些路线的,因为java有些知识前后关联挺大的,先学后面和先学前面难度是不一样的. 如果你是新手,只要你知道路线这个东西,起码要比别人强,至少知道可以怎么走(更重要的 ...
- 分布式基础理论之CAP 和BASE
前言 本文聊聊 CAP 定理和 BASE 理论. CAP 定理 C:一致性(Consistency) 数据的强一致性.希望分布式系统只读到最新写入的数据 A:可用性(Availability) 分布式 ...
- Shtml、html、xhtml、htm以及SSI的了解与认识(转载)
Shtml.html.xhtml.htm以及SSI的了解与认识(转载) 一.htm.html.shtml网页区别(博客园) 文章链接:https://www.cnblogs.com/Renyi-Fan ...
- Prometheus时序数据库-数据的查询
Prometheus时序数据库-数据的查询 前言 在之前的博客里,笔者详细阐述了Prometheus数据的插入过程.但我们最常见的打交道的是数据的查询.Prometheus提供了强大的Promql来满 ...
- [差分][二分][贪心]luogu P3634 [APIO2012]守卫
题面 https://www.luogu.com.cn/problem/P3634 给m个限制,可以是一段区间中必须有或者必须无忍者 最多有k个忍者,问有多少个位点一定有忍者 分析 首先用差分标记一下 ...