图论
Lqingyyyy
这个作者很懒,什么都没留下…
展开
-
2018 ccpcfinal Gym - 102055B滑动窗口
题意问你 给你 n个人 每个人 有两种属性 可以选择 A 选择 B 但是有些人 不能同时选 A或者 同时选B 问最后得到的 MAX - MIN 最小 首先没有 人限制的话 那么就是个经典题 滑动窗口求 差值最小 只需要把两个值拆分 sort一下 然后每次找到 n 个人 的属性取一下 min 即可 有限制的话 无非是 把人变成了联通块 多个联通块 组合求差值 此题 是 每个人选择两种值 每个联通块就有两种 maxn 和 minn 我们只需要拆分成 4种值进行排序即可 #include<iostream&原创 2021-10-14 13:14:03 · 153 阅读 · 0 评论 -
hdu 4635 最多能加多少边使得图不变成强连通图
首先跑一遍tarjan 缩点无异议 缩完点后 若scc_cnt = 1 那么直接输出 -1 对于多个点的连通图来说 首先缩了点的那个点 里面的点是随便 连的 sum += sz[i] * (sz[i] - 1) 最后减去已连的就好了 再其次就是 缩完点之后的图 是树 因为树 是单向边 所以我们可以把 已经按照那个方向 那个点全都 连上 其次就是还有反向边 反向边一定要剩下至少一个点没有连反向边 并且是叶子节点 这样我们就能完全选完了 #include<iostream> #include<原创 2021-10-07 22:07:32 · 99 阅读 · 0 评论 -
POJ - 3694填边求桥
在无向图求完tarjan 并且缩点后 剩下的是树 树上的边全是 割边 添加 x,y联通块 之间的树边全变为普通边 所以我们只需要 维护联通块 即可 可以使用并查集 复杂度约为 mq 此题我们可以直接考虑 用 on的方法来找lca 复杂度为 nm 考虑一下正确性 考虑一下此图 点2到点5与点4到点7是否会错过 因为 倘若先走2 - 5那么6 就会成为7的父节点 而不是 4 若先走2 - 3那么 也是正确 所以on找 父节点是可以的 #include<iostream> #include<原创 2021-10-07 13:41:51 · 87 阅读 · 0 评论 -
hdu2121 最小树形图 (无根)
加入一个虚点 往每条边放入INF 这样的话 最多只有一条边会与他 相连 只需要记录一下第几个点是和虚点相连即可 注意!不查重比较简便! #include<iostream> #include<cstring> #define INF 0x3f3f3f3f using namespace std; const int N = 1100,M = 11000 + N; struct node{ int x,y,w; }a[M]; int dis[N][N]; int n,m原创 2021-10-03 14:49:56 · 145 阅读 · 0 评论