并查集
只会写臭虫
这个作者很懒,什么都没留下…
展开
-
最小生成树---Kruskal算法+并查集(和prime算法模板)
CCF 201412-4 最优灌溉 #include<iostream> #include<vector> #include<algorithm> using namespace std; #define maxn 1005 struct node{ int x,y,z; }n1; int p[maxn]; int n,m; vector&原创 2018-12-12 12:55:54 · 242 阅读 · 0 评论 -
LeetCode 399. 除法求值(并查集+BFS)
把各个string看做顶点。然后a/b的值看做边。对于每个查询a/b,我们要求的就是从a到b的一条路径,答案就是这条路径上的边权之积。我用的是BFS 代码如下: class Solution { public: unordered_set<string>st; //存放顶点的集合 map<pair<string,string>,double>mp...原创 2019-07-03 14:02:36 · 588 阅读 · 0 评论 -
685. 冗余连接 II(并查集)
这题与684. 冗余连接不同的是,这里的图是有向图,要求去除一条边,使得剩下的点和边组成一颗树。 树的定义: 有且只有一个结点的入度为0,其他节点的入度为1。 所以考虑两种情况: ①没有入度为2的结点: 根据题意,这个图中一定有环,那么这种情况的判断就跟684. 冗余连接的解法一样了。把图看成无向图,利用并查集判断边连接两个点是否连通,若连通,输出这条边。 ②这棵树中有一个结点入度为2,这种情况里...原创 2019-07-03 19:30:31 · 212 阅读 · 0 评论 -
LeetCode 947. 移除最多的同行或同列石头
我没看懂这道题是什么意思,网上的解析是: 把在同一行或者同一列的两个石头看做是连通的,然后利用并查集求连通分量个数。答案=石头总数n-连通分量个数。 代码: class Solution { public: int f[1010]; int getf(int u) { return f[u]==u?u:f[u]=getf(f[u]); } v...原创 2019-07-05 20:49:37 · 218 阅读 · 0 评论