连通图
Nightmare丶
登高必自卑,行远必自迩
展开
-
Caocao‘s Bridges HDU - 4738
题意: 在赤壁之战中,曹操被诸葛亮和周瑜击败。但他不会放弃。曹操的军队仍然不善于水战,所以他提出了另一个想法。他在长江建造了许多岛屿,在这些岛屿的基础上,曹操的军队很容易攻击周瑜的部队。曹操还建造了连接岛屿的桥梁。如果所有岛屿都通过桥梁相连,那么曹操的军队可以在这些岛屿中非常方便地部署。周瑜无法忍受,所以他想要摧毁一些曹操的桥梁,这样一个或多个岛屿就会与其他岛屿分开。但周瑜只有一枚由诸葛亮留下的炸弹,所以他只能摧毁一座桥。周瑜必须派人携带炸弹来摧毁这座桥。桥上可能有守卫。轰炸队的士兵数量不能低于桥梁的守卫数原创 2020-10-30 15:21:00 · 235 阅读 · 0 评论 -
Prince and Princess HDU - 4685
题意: 有 n 个王子和 m 个公主,每个王子有 kik_iki 个喜欢的公主,每个公主都喜欢所有的王子,询问每个王子可能会和哪些公主匹配。 题解: 首先 n 个王子 和 m 个公主做一次二分匹配,得到匹配数最大为res,相当于右边有 m - res 个点没有匹配,左边有 n - res 个点没有匹配。 所以可以加入 m - res 个王子喜欢所有的公主,加入 n - res 个公主被所有的王子喜欢,加入后的新图一定是一个完美匹配。 然后跑一次强连通 如果u,v属于同一连通块,那么相当于连通块中的王子公主原创 2020-10-30 14:45:01 · 118 阅读 · 0 评论 -
Strongly connected HDU - 4635
题意: 给定一个有向图,求最大可以增加多少条边使得这个仍然不是强连通。 题解: 考虑逆向思维 我们知道一个有向完全图的边数为 n * (n - 1) 比如现在有k(k >= 2)个连通块,其中一个连通块的点数为 x 那么我们将这 x 个点和其他 n - x 个点的边删掉,删掉后的图一定不是强连通的 因此我们只需要考虑让需要删掉的边 x * (n - x) 最少,那最后留下的边就越多 所以我们只需要使 n * (n - 1) - x * (n - x) - m 最小即可 因为n, m都是定值,这其实也就原创 2020-10-29 21:37:33 · 95 阅读 · 0 评论 -
Warm up HDU - 4612
题意: 给出一个n个点m条边的无向图,询问添加一条边后图中最少有多少个桥? 题解: 对无向图缩点,缩点后的DAG有多少条边即有多少个桥。 很明显添加一条边(u, v)后,DAG中的(u, v)路径上的桥都会失效。 那么我们直接找一条最长的路径即直径即可。 代码: /* * @Author : Nightmare */ #include <bits/stdc++.h> using namespace std; #define ll long long #define ull unsigned原创 2020-10-29 19:41:05 · 110 阅读 · 0 评论