![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
图论
文章平均质量分 68
ACZone
这个作者很懒,什么都没留下…
展开
-
hdu6090 Rikka with Graph 2017多校第五场1006 找规律
题意:有n个点,你可以填上m条边。连通的两点间的距离就是最短路上的边数,不连通的话是n。求出填上边后的距离之和的最小值。题解:多写几组之后发现,最优的填法是:选定一个点,先把该点与其他所有点连满,若有多的边,再选下一个点与其他点连满(这或许是一个结论,但是图论学的不精)。计算的时候我是用全部不连的状态减去每次连边后两点间的距离减少的值,具体看代码理解。原创 2017-08-08 17:28:35 · 274 阅读 · 0 评论 -
poj3114 Countries in War 强连通缩点+最短路
poj3114 Countries in War 强连通缩点+最短路http://poj.org/problem?id=3114题意:有n个城市和m条通道,①从u城市到y城市需要w小时,②如果两个城市相互可达属于同一个国家,属于同一个国家的两个城市之间通信不需要时间。现在给出q个询问,求u城市到v城市的最短通信时间。题解:首先tarjan求强连通分量,然后缩点进行存图。最后跑最短路即可,我用的是SPFA,刚好SPFA的代码存的是链式前向星的板子。原创 2017-10-14 17:04:56 · 283 阅读 · 0 评论 -
hdu3639 强连通+缩点 tarjan算法
http://acm.split.hdu.edu.cn/showproblem.php?pid=3639 题意:投票:如果A投给B,B投给C,那么C也会得到A的投票。现在要求谁的票最多,并输出这些人的编号。 题解:跑tarjan求强连通分量,在强连通分量的队伍中,每个点都是相互投票的。那么对原图进行缩点,然后反向建图。选出入度为0的队伍进行dfs,求出有队伍投给了这个队伍。将总人数求和减去自己即可。最后输出在这个原创 2017-10-13 20:51:33 · 362 阅读 · 0 评论 -
紫书 - UVA - 1151 Buy or Build 最小生成树+状态枚举
紫书 - UVA - 1151 Buy or Build 最小生成树+状态枚举https://vjudge.net/problem/UVA-1151题意:平面上有n个点,两点间的费用为两点的欧几里得距离。另外还有m个套餐,购买第i个套餐需要花费c[i],购买后套餐中的点均连通。题解:先对原图求一次最小生成树,将原图的其他边都去掉,仅剩下这n-1条边。然后状态枚举[0,1<<m)进行购买套餐的操作,然后再求最小生成树即可。这种思路是正确的:用Kruskal算法求最小生成树时,就是每次优先选择最小的边,而原创 2017-10-30 22:19:41 · 230 阅读 · 0 评论 -
poj3352 Road Construction 边双连通分量tarjan算法
poj3352 Road Construction 边双连通分量tarjan算法http://poj.org/problem?id=3352题意:有n个城市m条道路,一开始任何两个城市相互可达。现在需要某条修路,修路时该道路不可通行。然后需要搭建临时的桥,使得任何两个城市仍是相互可达的。求最少需要搭建的桥的数量。题解:这是一个无向图,去掉一条边就不连通。那么这条边就是桥。现在要搭建临时的桥,搭建完后与原图一起,这个有向图就是边双连通的(边连通度大于1)。现在就是求加上几条边使得这个无向图是边双连通的。原创 2017-10-03 21:21:58 · 298 阅读 · 0 评论 -
poj1236 Network of Schools tarjan算法
poj1236 Network of Schools tarjan算法http://poj.org/problem?id=1236题意:给你一个有向图,1、求最少给多少的点发信息,可以使得所有的点都可以得到信息,2、求最少加上多少条边后,可以使图强连通。题解:1、跑完tarjan算法后,将每个强连通分量缩点,然后求出入度为0的缩点的个数,这也是最小点基的定义。2、最少加上多少条边后,可以使图强连通。可以发现找出入度为0和出度为0的缩点个数a,b。若a>b,可以从每个入度为0的点向出度为0的点连边,反之原创 2017-10-03 14:54:39 · 209 阅读 · 0 评论 -
hdu3440 House Man 差分约束系统 SPFA算法
hdu3440 House Man 差分约束系统 SPFA算法http://acm.hdu.edu.cn/showproblem.php?pid=3440题意:现在有n幢房子,具有不同的高度。超人只能从矮的地方飞到刚好比当前房子高的地方。现在你可以移动房子,但是房子的相对位置不能改变,且超人每次跳跃的水平距离小于d,求最矮的房子到最高的房子的水平距离的最大值。列出两种不等式:①房子的相对位置不能改变:dis[i]-dis[i-1]>=1->dis[i-1]-dis[i]<-1②超人每次跳跃的水平距原创 2017-09-21 16:10:01 · 188 阅读 · 0 评论 -
poj3169 Layout 差分约束系统 SPFA算法
poj3169 Layout 差分约束系统 SPFA算法http://poj.org/problem?id=3169题意:有n头牛按序号升序拍成一列,有两个限制条件:①A牛和B牛的距离不得大于X,②C牛与D牛的距离不得小于Y。若不存在输出-1,有多种排列输出-2,反之输出1和n的距离。题解:有方程组:A-B<=X;C-D>=Y;...C-D>=y->D-C<=-y那么对于每个不等式dis[i]-dis[j]<=x,变化为dis[i]<=dis[j]+x。很像最短路的更新条件dis[i]>di原创 2017-09-21 14:33:35 · 235 阅读 · 0 评论 -
hdu2121 Ice_cream’s world II 最小树形图+不定根(朱刘算法)
hdu2121 Ice_cream’s world II 最小树形图+不定根(朱刘算法)题意:一个有n个节点的有向图,以其中一点vi为根建树要求花费最小。求这个最小花费和vi。题解:用朱刘算法求最小树形图,复杂度是O(n*m),遍历每个点跑一次朱刘算法是O(n*n*m)。需要优化,这时候可以想到设一个虚拟的根v,v与每个点都可达,且权值很大为sum(原图所有边权和)。这样跑完朱刘算法后得到答案ans。如果ans-sum>=sum,说明原图不连通,因为v与原图至少连了两个点。原创 2017-09-19 14:48:52 · 517 阅读 · 0 评论 -
poj1679 The Unique MST 次小生成树
poj1679 The Unique MST 次小生成树http://poj.org/problem?id=1679题意:求最小生成树是否唯一题解:求出次小生成树,如果两者相等,则不唯一(存模板)。原创 2017-09-16 10:22:31 · 202 阅读 · 0 评论 -
CodeForces - 832D Misha, Grisha and Underground LCA倍增法
CodeForces - 832D Misha, Grisha and Underground LCA倍增法题意:给定一棵树,Misha和Grisha跳三个点a,b,c。两个人选其中两个为起点,剩下一个为终点出发。所有选择中要使两个人经过相同结点数量最多,输出最多的结点数。题解:选定两个点a,b求最近公共祖先k,也就是LCA。这样就可以求出a,b之间的距离dis(a,b)=deep[a]+deep[b]-2*deep[k]。所以ans=(dis(a,b)+dis(a,c)-dis(b,c))/2+1(结原创 2017-08-13 14:38:56 · 219 阅读 · 0 评论 -
hdu4324 Triangle LOVE 拓扑排序或强连通分量
hdu4324 Triangle LOVE 拓扑排序或强连通分量http://acm.split.hdu.edu.cn/showproblem.php?pid=4324题意:有n个人,u和v之间的关系有且仅有u喜欢v和v喜欢u中的一种。在要求其中是否存在三角关系。题解:由于每两个人之间都有关系,即有向边。那么对于环就肯定存在三角关系。比如a->b->c->d->a,根据题意,对于a和c肯定存在一条有向边,那么就是有三角关系。所以可以根据是否存在拓扑排序来判断是否有环,以及是否存在强连通分量(就是环)来原创 2017-10-15 11:56:59 · 237 阅读 · 0 评论