摘要:
"传送门" Solution 虽然没做过多少Floyd的题……但是还是灵性了一波。 首先你会发现数据是有单调性的!那么我们就干脆一个一个点加进去跑Floyd就行了,那么怎么加点呢? 对于某个点key,我要把它加进去,我们可以假设它是起点,那么以i为中点,j为终点,跑一下平方的松弛操作;同上,分别假设 阅读全文
摘要:
"传送门" 首先就发现了这题可以二分答案,毕竟是求最大的最小。 考虑二分最大边,则所有边权大于二分值的边都不能选。 在此基础上跑SPFA,求出从1到N耗的最少血量。然后观察血量是否为空即可。 阅读全文
摘要:
"传送门" Solution 考虑用二分答案去找最小的D,然后跑一跑Kruskal,大于D的边忽略掉,跑完之后查看有几个联通块,数量小于S即可。 但是这道题不需要二分。~~做完看的题解~~ 跑一遍Kruskal,记录当前最大值,并且查看联通块数量,只要数量小等于S就可以停止了,当前最大值为答案。 阅读全文
摘要:
2018.9.8 你会发现,如果不强制类型转换,中间有可能会爆掉。 2018.10.3 计数时注意long long 2018.11.11 long long……30分送出去了…… 2018.11.21 当权值有负数的时候,并且是查询最大值,最大值初始化不能是0,不然无法更新负数最大值 2018.1 阅读全文
摘要:
"传送门" 你会发现第二条规则不存在,因为在形成环之前,这几个城市就已经连通了。所以直接求最小生成树即可。 然后你会发现,边数特别多,所以Kruskal会TLE,并且开邻接表存图会MLE 所以干脆直接Prim了,因为是完全图,所以每个点对其他点都有边,那么直接遍历即可。 阅读全文
摘要:
定义及概念 在一个无向图G中,存在一个点集V,从图G中删掉所有属于V的点及其与之相连的边,G不连通。如果有一个边集E,删掉所有属于这个集合的边,G不连通。 点连通度:最小V的点数 边连通度:最小E的边数 割点:点连通度为1时,V的唯一元素 割边(桥):边连通度为1时,E的唯一元素 点双连通:任意两点 阅读全文
摘要:
如果一个点u是其所在搜索树上的根节点,如果它有两个以上的子树数量,则为割点。如果不是根节点,其子树的返祖边只要不回到它的祖先,即为割点。 cpp include include include define MAXN 100005 int head[MAXN]; struct edge{ int v 阅读全文
摘要:
"传送门" 题目描述 一些学校连入一个电脑网络。那些学校已订立了协议:每个学校都会给其它的一些学校分发软件(称作“接受学校”)。注意即使 B 在 A 学校的分发列表中, A 也不一定在 B 学校的列表中。 你要写一个程序计算,根据协议,为了让网络中所有的学校都用上新软件,必须接受新软件副本的最少学校 阅读全文