随笔分类 - ACM——图论
摘要:给出一个 n 个点的有向图,找若干个圈,是的每个结点恰好属于一个圈。要求总长度尽量小。 三倍经验题 Uva 12264,HDU 1853 这题有两种解法,一是匹配: 每个点只在一个圈中,则他有唯一的前驱和后继,也就是入度为1,出度为1,拆成 入度点和出度点,跑最小全匹配,因为是匹配,这样就保证了他在
阅读全文
摘要:双倍经验题:HDU 6214,3987 求最小割的最小边。 方案一: 首先跑最大流,这个时候割上都满载了,于是将满载的边 cap = 1,其他 inf ,再跑最大流,这个时候限定这个网络的关键边就是那个最少边的那个割。 方案二: 奇技淫巧,将每条边 cap* A + 1,最大流 = flow / A
阅读全文
摘要:第一遍DFS找出所有桥,第二遍DFS,给边连通分量标号。 模板: 这一份模板最类似于lrj的风格了,网上也有一篇,但是有明显bug!!!
阅读全文
摘要:Network Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 10404 Accepted: 3873 Description A network administrator manages a large network. T
阅读全文
摘要:题意:给定一个有向带权图,使得每一个点都在一个环上,而且权之和最小。 分析:每个点在一个环上,入度 = 出度 = 1,拆点入点,出点,s到所有入点全部满载的最小费用MCMF;
阅读全文
摘要:题意:每条边的长度是1,求访问k个节点,最少走多远。 分析:贪心,首先走直径len,走完直径len+1个点后,走剩下的点(k-len-1),而走这些点最少一定为(k-len-1)*2。 证明:反证法,要是比(k-len-1)*2还短,那么之前的直径len,就不是直径了。
阅读全文
摘要:LCA模板题。 DFS记录好,到根结点的距离。 #include <bits/stdc++.h> using namespace std; const int maxn = 40000+5; const int logmaxn = 20; struct Edge { int to,w; }; std
阅读全文
摘要:Description You are a boss who has N employers. One day, you have a message and you want to tell it to M employers of yours. As you are a funny man, y
阅读全文
摘要:之前做过这个题目,现在回想起来,又有新的柑橘。 求必须出去的骑士人数。 每一个双连通分量,如果是一个奇圈,那么一定是二分图染色失败。 依次遍历每个双连通分量,但是,对于邻接表中,有一些点不是双连通分量里面的,于是要重新编号bccno,因为割点bccno只有一个值, 但是,他要多次使用,因此要重新编号
阅读全文
摘要:题意:每个人的工资至少888,然后有m个条件,前者比后者要多。求最少工资。 分析: 最开始的开邻接矩阵的肯定超时,如果dfs,会出现由于刚开始不是从入度为0的点出发,后期修改不了。比较麻烦。 正确方式是,用队列实现,不需要像普通队列一样,用vis数组标记,而是根据入度是否为0的标准加入队列。 1 /
阅读全文
摘要:题意:两遍最长路,不能走重复点。和UVA 10806类似。 分析:拆点,u->u',MCMF,求的是最大流的最小费用,那么cost取负。 注意的是源点,源点不用拆,那么走出来的最小费用,左上角的点,右下角的点走了两遍,输出除去即可。 1 #include <bits/stdc++.h> 2 3 us
阅读全文
摘要:题意:和Uva 11419 类似。 首先最少点集覆盖 = 最大匹配。 我们可以在 S 和行 的边 不是1,有了权值,但是题意要求的是乘积最小,那么可以用 log(a*b) = loga + logb 转换,那么权值就是logr ,logc; 最大匹配 = 最大流(最大流一定经过最小割,最小割=最大流
阅读全文
摘要:拆点,因为只能走一步,那么u->v 后就不能到k了,这样,建图就能保证只走一步; 1 #include <bits/stdc++.h> 2 3 using namespace std; 4 5 const int maxn = 105*2; 6 const int INF = 0x3f3f3f3f;
阅读全文
摘要:题意: 用最少的路径,覆盖掉所有的边,(点可以重复); 不是用最小路径覆盖,最小路径覆盖是覆盖点; 分析: 建图:入度<出度,说明这是个起点,从这里出发,入度>出度,说明从这里结束; 先找出一个最大的可行流 f,反着求一遍最大流fmax ,就是最小的可行流了; 输出路径这么变态的东西,我就不会了;这
阅读全文
摘要:题目链接:https://vjudge.net/contest/166461#problem/C 题意: n对夫妻,有m对人吵过架,不能排在同一边,求新娘的一边的人; 分析: 每对夫妻,看成两个点,女的 2i,男的2i+1,吵架了的关系,就是必然关系,必须满足,不能在同一边;再用2-SAT #inc
阅读全文
摘要:题目链接:https://vjudge.net/contest/166461#problem/A 题意: 给定一个图,特点是每个点的度都是3,求是不是原图可以分解为全部鸡爪;每条边只属于一个鸡爪; 分析: 每一个鸡爪的根对应三个其他的顶点,但是这三个点不能再作为鸡爪的根了, 这样,两个鸡爪根就不能直
阅读全文
摘要:题目链接:https://vjudge.net/contest/166461#problem/B 题意: 给一个无向图,求每一个点删除后,剩下的连通块的数目; 分析: 只有割顶被删掉后,连通分量才会改变,改变多少呢? 就是他这个割顶除 父亲结点,的其他孩子结点(及其子孙结点)是否返回到最早的祖先结点
阅读全文
摘要:给出图,求他的“仙人掌度”,即求包括他自身的生成子图有多少? 只能删去仙人掌上的叶子的一条边,然后根据乘法原理相乘; 1、怎么求一个仙人掌叶子上有多少边? 可以利用点,边双连通的时间戳这个概念,但是绝对时间是不对的,只能用相对的时间戳。 2、怎么把第二种情况剔除掉? 就是记录每一个点加入环中的次数;
阅读全文
摘要:题目链接:https://vjudge.net/problem/UVALive-3126 题意:有m个客人,位于不同的位置,去一些地方,出发的时间给出,要一些出租车去接,但是,每辆出租车要在出发前一分钟要到,问:最少要几辆出租车; 分析:最少路径覆盖(在图中找尽量少的路径,使得每个节点恰好在一条路径
阅读全文
摘要:题目链接:https://vjudge.net/contest/161820#problem/E 题意: 有一些同学,要从中选出一些同学来,人数尽量多,但是,两两之间要满足至少一个条件(身高差>40,性别相同,。。。) 分析: 最大独立集:尽量选择多的结点,任意两个结点不相邻; 男同学X,女同学Y,
阅读全文