并查集
pure0000
这个作者很懒,什么都没留下…
展开
-
洛谷p1196 [NOI2002]银河英雄传说
多开两个数组保存结点到根的距离和所在集合大小,中间战舰数量是x到根的距离减y到根的距离减一。#include<iostream>#include<cstdio>#include<cstdlib>#include<cmath>#include<algorithm>using namespace std;const int max...原创 2018-06-12 10:35:05 · 367 阅读 · 1 评论 -
洛谷p1197 [JSOI2008]星球大战
把摧毁转换成修建,逆序修建保存摧毁前的联通块,再正序输出就是答案了。#include<iostream>#include<cstdio>#include<cstdlib>using namespace std;const int maxn = 4e5 + 5;int n, m, k, num, len[maxn],c[maxn];int f[maxn...原创 2018-06-12 14:31:31 · 180 阅读 · 0 评论 -
洛谷P3367 【模板】并查集
a和b打架打输了,b做老大,f[a]=ba和c打架打输了,c做老大,f[a]=c,b的老大也变成了c,f[b]=c以上是合并查询就直接找彼此的老大判断是否相同就可以#include<iostream>#include<cstdlib>#include<cstdio>using namespace std;const int maxn = 1e4 + 5;...原创 2018-06-09 19:36:43 · 174 阅读 · 0 评论 -
洛谷p2024 食物链
emmm~没什么好说的,看代码注释吧~#include<iostream>#include<cstdio>#include<cstdlib>using namespace std;const int maxn = 5e4 + 5;int f[maxn * 3], n, k, ans = 0;int find(int x) { if (f[x] ==...原创 2018-06-10 14:10:18 · 455 阅读 · 0 评论 -
洛谷p1111 修复公路
一开始村庄之间两两不连通,按时间从小到大修复公路,判断两个村庄是否联通,若联通了那就直接看下一条路,若不联通那就修复。直到M条路都遍历完。重点来了,最早什么时候任意两条村庄都存在至少一条修复完成的道路(可以由多条公路连成一条道路)?满足条件最少需要几条路??n个村庄就n-1条呗,输出时判断公路数有没有至少n-1条,有输出时间,没有就-1#include<iostream>#inclu...原创 2018-06-10 19:02:29 · 393 阅读 · 0 评论