随笔分类 - 图论
摘要:#include using namespace std; typedef long long ll; const int maxn=2e5+5; const int mod=1e9+7; /* 因为是有向的无环图,要找(i,j)之间的路径数, 肯定是考虑toposort就可以了 然后就是考虑怎么统计cnt(i,j)*a[i]*b[j] 如果cnt[i]表示到达i的种类,res[i]表...
阅读全文
摘要:题意:给出一个n个节点的简单无向图,每个节点的度数为3,判断能否分解成题意给出的那种爪,一个中心节点带着三个边,每条边只属于一个爪,一个点可以属于多个爪 分析:如果一个点是一个爪的中心节点,那么它与它相连的三个点都不可能是一个爪的中心,那么就可以把图抽象为两种节点,染色节点和不染色节点,而且染色节点
阅读全文
摘要:题意:有一个简单无环图,最多有两个奇数点,要求删除最少的边使得所有点的度数都是偶数,且不能为0 分析:通过删除奇数点的一条边使得该点的度数变为偶数,删除之后边的另一点如果不是奇数点,那么它就会变为奇数点,那么奇数点会一直这么传递下去,知道遇到那个奇数点,那么只要求两个奇数点之间的最短路就行了,但是边
阅读全文
摘要:题意:n个点,m条路,每次启动和停止汽车分别需要x,y能量,给出每条路和路上的速度,额外消耗的能量是所有走过路的最大差,每次给出起点和终点,输出最小能量 分析:启动和终止的能量必须消耗,然后就是求起点和终点之间的最小速度差了,紫书11章有道题是求最小瓶颈树,和这个条件是差不多的,不同是生成一棵树,受
阅读全文
摘要:题意:有n个竞选人,由m个人投票,每个人对竞选人都有一个排名,每次两个人竞选,m个人分别投票,每次两个人,胜利者继续参与竞选,失败者淘汰,剩余一个人的时候停止你希望让c最后获得胜利 ,你可以安排每次参与竞选的两个竞选人,问是否有可能让c竞选成功 分析:胜利者向失败者连一条有向边,那么问题就转化为从c
阅读全文
摘要:如果从一个点出发,所有的边经过一次,则称为欧拉道路,如果最后回到了起点,那么成为欧拉回路 下面先讨论欧拉路的几个问题,最后给出每个问题的解决方案 下面给出两种情况的判定条件: 在所有边连通的情况下 如果所有的点的度数都为偶数,那么这是一条欧拉回路 如果存在两个奇度点,那么从一个奇度点出发,最后到达另
阅读全文
摘要:题意,给出有向图,给定的节点之间长度为1,求出平均长度,既所有道路长度和/道路数量 分析:节点的个数最多为100个,那么直接floyd求就可以了,但是没有给出最大的节点n,需要自己求 1 #include<bits/stdc++.h> 2 using namespace std; 3 const i
阅读全文
摘要:题意:给出一个n<100的图,求苗条度最小的生成树,苗条度指生成树最长的边-最短的边 分析:先按照边权进行排序,然后枚举生成树边开始的起点,用kruskal找到终点,每次更新答案 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int
阅读全文

浙公网安备 33010602011771号