随笔分类 - ACM_图论
摘要:题目链接:http://poj.org/problem?id=3678思路分析:该问题要求判断是否能给定每一个布尔变量一个值,使布尔变量满足某些逻辑条件;需要根据逻辑条件来进行点与点的连接:假设两个变量为a与b,2 * a表示a的值为0的点,2 * a + 1表示a的值为1的点,则可以根据逻辑条件给...
阅读全文
摘要:题目链接:http://poj.org/problem?id=3207思路分析:该问题给出N个点,并给出M条连接这些点的线,需要判断是否这些线不会相交;(1)假设两条线A的端点按照圆圈的顺时针方向依次为A0,A1,同理线B为B0, B1,则可以知道当 A0 线B在外侧,线A在外侧—>线B在内侧,线B...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1824思路分析:该问题为2-SAT问题;需要注意逻辑推理的等价性;(1)题目第一个条件:每一个队或者队长留下或者其与两名队员同时留下,或者表明只能为两种情况中的一种;假设三人为A,B,C,队长为A,0表示...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3062思路分析:将问题转换为2-SAT问题,需要注意的是将命题转换为有向图的方法;命题中A1, A2, C1, C2表示C1与C2不能同时出现,所以A1中C1出现等价于A2中C2 ^ 1出现,同理A2中C...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1874思路分析:该问题给定一个无向图、起始点和终点,要求求出从起始点到终点的最短距离;使用Dijkstra算法求出从起始点到所有的其他点的最短路长度即可,如果最短路长度为INT_MAX,表示从起始点到该点...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2544思路分析:该问题给定一个无向图,要求求从起始点到终点的最短路径长度;可以使用dijkstra算法求出该起始点到其他所有点的最短距离;代码如下:#include #include #include #...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1233思路分析:该问题为最小生成树问题,使用kruskal算法或者prim算法即可解决;代码如下:#include #include #include #include using namespace s...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1532思路分析:问题为最大网络流问题,给定一个有向图,需要求解该有向图的最大网络流,使用EdmondsKarp算法求解;需要注意输入的边中可能有重边的存在;代码如下:#include #include #...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3549思路分析:该问题为裸的最大网络流问题,数据量不大,使用EdmondsKarp算法求解即可;需要注意的是该问题的点最多有15个,边的数目最多有1000个,所以该图中存在重边,需要将多个重边合为一条边;...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1269思路分析:该问题要求判断是否每两个房间都可以相互到达,即求该有向图中的所有点是否只构成一个强连通图分量,使用Tarjan算法即可求解;代码如下:#include #include #include ...
阅读全文
摘要:题目链接: http://poj.org/problem?id=1144思路分析:该问题要求求出无向联通图中的割点数目,使用Tarjan算法即可求出无向联通图中的所有的割点,算法复杂度为O(|V| + |E|);代码如下:#include #include #include #include usi...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3478思路分析:该问题需要求是否存在某一个时刻,thief可能存在图中没一个点;将该问题转换为图论问题即为判断该图是否为一个连通图且不为二分图;(1)二分图的性质:对于无向图G=(V, E),如果可以将图...
阅读全文
摘要:题目链接:http://poj.org/problem?id=1386思路分析:该问题要求判断单词是否能连接成一条直线,转换为图论问题:将单词的首字母和尾字母看做一个点,每个单词描述了一条从首字母指向尾字母的有向边,则则所有的单词构成了一个有向图,问题变为判断该有向图中是否存在一条欧拉路;有向图中存...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1878思路分析:该问题给定一个无向图,要求判断该无向图是否存在欧拉回路;无向图判断存在欧拉回路的两个必要条件:该无向图为连通图且所有的结点的度数为偶数;代码如下:#include #include #in...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3018思路分析:题目可以看做一笔画问题,求最少画多少笔可以把所有的边画一次并且只画一次;首先可以求出该无向图中连通图的个数,在每个无向连通图中求出需要画的笔数再相加即为所求。在一个无向连通图中,如果所有的...
阅读全文
摘要:题目链接:http://poj.org/problem?id=1094思路分析:此题目涉及到图论拓扑排序的多个知识点:1.判断给定的图是否可以拓扑排序;2.判断给定的图能否产生一个唯一的拓扑排序,即全序;代码如下:#include #include #include using namespace ...
阅读全文
摘要:题目链接:http://poj.org/problem?id=1251思路分析:使用最小生成树算法,可以求解。需要注意的树Kruskal算法中使用了并查集,对于并查集用法需要注意。代码如下:#include #include using namespace std;const int N = 30,...
阅读全文

浙公网安备 33010602011771号