
ACM——图论
图论
微风袭来
这个作者很懒,什么都没留下…
展开
-
树的简单问题总结
重心 定义(参考 Oi Wiki) 对于树上的每一个点,计算其所有子树中最大的子树节点数,这个值最小的点就是这棵树的重心 重要性质 以树的重心为根时,所有子树的大小都不超过整棵树大小的一半 一棵树最多有两个重心 树中所有点到某个点的距离和中,到重心的距离和是最小的;如果有两个重心,那么到它们的距离和一样 在一棵树上添加或删除一个叶子,那么它的重心最多只移动一条边的距离 把两棵树通过一条边相连得到一棵新的树,那么新的树的重心在连接原来两棵树的重心的路径上 求法 动态维护 参考:https://www.cn原创 2020-10-14 22:51:12 · 630 阅读 · 0 评论 -
Tarjan系列例题
Tarjan算法——有向图环问题的killer P2863 [USACO06JAN]牛的舞会The Cow Prom 洛谷模板题 题目 问节点大于1的强联通分量个数 题解 染色的代码稍微修改即可 #include<bits/stdc++.h> #define maxl 400010 using namespace std; int n,k,ff,top,cnt,cnt2,id,nu...原创 2019-10-31 16:22:31 · 428 阅读 · 0 评论 -
树的子树大小与深度
2281 树的Size之和 51nod 2281 这题用的是并查集的思想,由于给定了父子关系,所以很容易知道建立并查集,最后find每个数,并且find函数找到一次某个节点,就给这个节点计数一次,代表这个节点有这个子节点 #include<iostream> using namespace std; int num[1005],pre[1005]; void ans(int x) { ...原创 2019-09-23 00:12:04 · 2838 阅读 · 0 评论 -
hdu1217(SPFA判负环)
题目 给出几个点之间的路径,求是否有边权相乘大于1的环 题解 之前听说SPFA可以判负环,以为只能真的判边权和为负的环,但是今天这个题打破了我的认知,边权和大于1的环也能用SPFA来判 首先得明白SPFA判负环的原理,就是因为求最短路,所以假如我一直走这个负环,我可以一直刷新最短路径,无穷尽的刷,今天这个之所以也能用SPFA来判是因为他的这个环也属于 可以反复刷,无穷尽的增长的,因为大于1的数的乘...原创 2019-09-15 23:05:44 · 346 阅读 · 0 评论 -
hdu2112(Trie树 + Spfa最短路)
题目 给出几个字符串对之间的距离,求某两个字符串之间的最小距离 题解 几个坑点: 无向图!无向图!无向图! 没有路径输出 -1 既有大写又有小写 主要思想就是用字典树处理字符串成数字节点,然后用SPFA求最短路,这样就行了 #include<bits/stdc++.h> using namespace std; const int maxn =100000;//如果是64MB可以开...原创 2019-09-15 12:23:53 · 113 阅读 · 0 评论 -
POJ 3660(dfs)
题目 N (1 ≤ N ≤ 100) cows, conveniently numbered 1…N, are participating in a programming contest. As we all know, some cows code better than others. Each cow has a certain constant skill rating that is...原创 2019-09-14 14:02:15 · 184 阅读 · 0 评论 -
hdu1269(Tarjan)
题目 判断有向图是否为强连通图 题解 Tarjan的模板题,没什么好解释的,记住每次都要进行初始化,只有联通分量个数等于1时,才能说明有向图是强连通图 #include<iostream> #include<stack> #include<vector> using namespace std; const int MAXM=10005; int n,m,cn...原创 2019-09-09 14:14:18 · 110 阅读 · 0 评论 -
拓扑排序(转载)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...转载 2019-09-08 21:57:05 · 88 阅读 · 0 评论 -
P2607(基环树+树形DP)
题目 最近想要刷博客数,给自己一种努力的假象,最好的方式当然是给做过的题目做一篇题解啦 标准树形DP题,选了父节点不能选子节点,唯一难点是基环树的处理 题解 先找环,只需要找到环上的两个点就行了,其他点不用一起找出,用dfs,断边 断边的具体操作是:分别将边上的两个点设为根进行树形DP,但两个点之间还有的关系怎么办呢,就每一次强制不选根节点,然后比较两次DP的结果,选取最大的那个 代码 #incl...原创 2019-06-18 11:18:38 · 247 阅读 · 0 评论 -
P2661(拓扑排序找最小环)
题目 最近没什么课,刷了不少题,但总是懒得写题解,再看了好多篇大佬的千篇题解后,立志以后每做一道题就写一道相应的题解 大意是给出一个n个节点,n条路的有向图(一看就知道是多个基环树的求环问题),求最小环的大小 题解 洛谷里看了几篇都是并查集求环,或者Tarjan无脑求什么最大联通分量,额,我都不会,对于环的处理只会拓扑排序(感觉最容易理解),网上找了个靠谱的拓扑排序的板子,改成最近学的链式前向星存...原创 2019-06-18 10:18:24 · 734 阅读 · 0 评论 -
POJ3009(dfs搜索)
题目 POJ3009 一个很有趣的迷宫问题,只能朝一个方向直走,当撞到墙上时可以转弯,且那一块墙消失 思路 数据真的很小,20*20的迷宫,还有转弯的次数限制,完全可以穷举所有路径,然后选最小,可以做一个简单但很实用的优化,减少大量找到答案后的无用搜索 if(cishu>ans||cishu>10) return; 算法我用的是DFS搜索(不会BFS,哭辽),本题和一般迷宫题不同,...原创 2018-12-27 18:06:50 · 2975 阅读 · 0 评论 -
网络流24题——P2766
题目 PS 最近学习网络流真的是头大了,学了几天仍然只会用套Dinic做一些简单的最大流,二分图匹配等问题,感觉网络流的关键是30%的板子水平(必须得深入理解,且易修改)+70%的建模建图水平,等做到那种万物皆可网络流就差不多出师了 看了太多神仙建模之后的我做线代高数都想用网络流了,我也太菜了吧Ծ‸Ծ «问题描述: 给定正整数序列x1,…,xn 。 (1)计算其最长不下降子序列的长度s。 (2)...原创 2019-05-15 19:48:33 · 167 阅读 · 0 评论 -
hdu1874(dijk+堆优化)
题目 HDU1874 思路 学习图论的第二天,从最简单的Dijkstra算法开始,hdu1874可以算是一道单源最短路问题的裸题,坑点是两个点之间的路径不唯一,应该选取最小的那条,Dijkstra算法就不用介绍了,具体思路是选取当前最短路径的点,向周围的点进行优化,然后出队,重新选取最短路径点进行更新,堆优化的作用是减少挑选当前最短路径点的时间复杂度,不用for循环逐个访问,而是用一个堆来维护这组...原创 2019-01-08 21:28:39 · 328 阅读 · 0 评论