图论篇
图论篇
桑榆207
在最终的结果到来之前,任何肯定会赢之类的话都是虚无缥缈的。
展开
-
Air Raid POJ - 1422 + Treasure Exploration POJ - 2594 最小路径覆盖两种情况记录
题意给出点和边,求最少的路径使得可以覆盖所有的点,一种情况是点可以重复,一种是点不可以重复走。不可重复#include <string.h>#include <cstdio>using namespace std;#define ll long long#define maxn 600+66#define rep(i,a,b) for(int ...原创 2019-11-18 16:12:41 · 109 阅读 · 0 评论 -
Asteroids POJ - 3041 二分图最大匹配两种算法记录
题意给出n*n矩阵,有k个障碍,每次可以消灭一行或一列障碍,问至少需要消灭多少次。思路障碍点的行和列连边。普通写法#include <algorithm> //STL通用算法#include <bitset> //STL位集容器#include <cmath>#include <cstdio>#i...原创 2019-11-18 11:32:21 · 138 阅读 · 0 评论 -
Chessboard POJ - 2446 二分图最大匹配
题意给出n*m矩阵,给出k个漏洞所在坐标,问能不能用1*2的模板覆盖完全不是漏洞的点。思路按行+列奇偶性来分成两部分,因为1*2的矩形覆盖的和值一定奇偶性不同,和值为奇数的向上下左右(和值一定是偶数)连边,注意预处理出来每个点的标号。#include <algorithm> //STL通用算法#include <bitset> /...原创 2019-11-18 11:06:33 · 160 阅读 · 0 评论 -
HDU - 2853 Assignment--KM优先使用原匹配边
题意给出n个人和m个任务,一个人只能做一个任务,且一个任务只能被一个人做,给出人与任务之间做关系的价值矩阵,且给出每个人初始时所做的任务,先要求重新安排,求最大价值与原先价值的差值和最小改动任务分配。思路要求优先使用原匹配边,那么让边权*100+(若是原来使用的边?1:0),最后答案再/100就好了。之所以选择*100,是因为若完全选择原先的边,也不会影响他们之间大小的比较。最...原创 2019-11-14 10:49:06 · 161 阅读 · 0 评论 -
HDU2282--Chocolate--KM
题意n个装有糖果的盒子摆成环形,糖果的数量不超过n个,每次一个盒子都可以向相邻的盒子中转移1个(其内糖果数>=1)个,问至少转移多少次使得所有盒子中至多一个糖果。思路把每一个装有ai>1个糖果的盒子拆成ai-1个点,形成一排,然后盒子内数量为0的形成一排,之间连边,边的权值为。#include<bits/stdc++.h>using name...原创 2019-11-13 21:09:01 · 145 阅读 · 0 评论 -
HDU2255--奔小康赚大钱--KM
简单模板题,记录下O(N*N*N)的模板。#include<bits/stdc++.h>using namespace std;#define ll long long#define maxn 300+66#define rep(i,a,b) for(int i=a;i<=b;i++)#define dep(i,a,b) for(int i=a;i>=b;i...原创 2019-11-13 20:14:29 · 170 阅读 · 0 评论 -
Gym101061K--Army--二分图匹配
题意士兵会有一些喜欢的武器、也有喜欢的一些位置,某位置只能用一些武器(武器数量无限),问怎么安排使得最多的士兵在自己喜欢的位置拿着自己喜欢的武器。思路以武器为媒介,士兵像位置连一条边,求最大匹配。#include<bits/stdc++.h>using namespace std;#define ll long long#define maxn 100...原创 2019-11-13 19:47:34 · 155 阅读 · 0 评论 -
POJ2226--Muddy Fields--HK二分图匹配
题意给出n*m的矩阵,*代表泥坑,.代表草地,现在要用长度不限,宽为1的矩形覆盖所有泥坑,不能覆盖草地,问至少需要多少个矩形才能完全覆盖完所有的泥坑。思路把所有的横排连续泥坑标号,再把所有的竖排连续泥坑标号,一个泥坑会对应一个横排标号和竖排标号,横排标号和竖排标号形成了一张二分图,求至少有多少点覆盖掉所有的边,即最小点覆盖。#include <algorithm...原创 2019-11-12 12:00:50 · 115 阅读 · 0 评论 -
bitset判断连通性
现在给出N个点(<=3000)选择三个点,作为圆心,形成三个圆,这三个圆不能相交(可以相切),且半径相同,问半径最大值。思路:先把两两之间的距离求出来,从大到小排序,然后连一条边,当第一次出现三元环的时候,那么半径就为这个距离/2。判断三元环不能写dfs超时,要用bitset处理。#include<bits/stdc++.h>using namespace s...原创 2019-10-30 22:31:21 · 180 阅读 · 0 评论 -
HDU5952--Counting Cliques--DFS
Counting Cliques Time Limit: 8000/4000 MS (Java/Others)Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 5414Accepted Submission(s): 1929 Problem Description ...原创 2019-10-16 15:36:33 · 136 阅读 · 0 评论 -
TWO-SAT题目总结
最小字典序输出题意:现在有n个党派,每个党派有2个代表,我们需要从每个党派中选一个代表出来,构成一个n个人的立法委员会.但是可能有一些代表互相讨厌,所以他们不能同时出现在立法委员会中.现在问你是否存在一个合理的方案,且输出所有可能立法委员会的最小字典序结果.分析:要输出最小字典序的2-SAT问题,用刘汝佳 训练指南上的方法是最简单的(即按...原创 2019-10-15 23:00:04 · 315 阅读 · 0 评论 -
POJ1469--COURSES--二分图匹配
COURSESTime Limit:1000MS Memory Limit:10000K Total Submissions:27890 Accepted:10617 DescriptionConsider a group of N students and P courses. Each student visits zero, one o...原创 2019-10-14 11:34:46 · 1899 阅读 · 0 评论 -
二分图题目总结
给出A B两个数组,在A中删除K1个元素,在B中删除K2个元素,使得A中的元素不能整除B中的元素。也就是在所有的整除关系中删除最少的点使得无边可以连接,最小点覆盖。#include<stdio.h>#include<string.h>#include<vector>using namespace std;int n,m;int matc...原创 2019-10-12 20:20:06 · 244 阅读 · 0 评论 -
LIGHTOJ 1094树的直径
http://lightoj.com/login_main.php?url=volume_showproblem.php?problem=1094Given a tree (a connected graph with no cycles), you have to find the farthest nodes in the tree. The edges of the tree are w...原创 2019-01-15 18:58:31 · 289 阅读 · 0 评论 -
HDU5636 Shortest Path Floyd算法
http://acm.hdu.edu.cn/showproblem.php?pid=5636 Problem Description There is a path graph G=(V,E) with n vertices. Vertices are numbered from 1 to n and there is an edge with unit length betwe...原创 2019-01-16 10:12:34 · 239 阅读 · 0 评论 -
POJ 3080 Blue Jeans 最长连续公共子序列 模拟||kmp
http://poj.org/problem?id=3080求最长连续公共子序列(>=3)DescriptionThe Genographic Project is a research partnership between IBM and The National Geographic Society that is analyzing DNA from hundreds o...原创 2019-02-02 19:30:57 · 166 阅读 · 0 评论 -
POJ 1515 Street Directions 异或标记割边
http://poj.org/problem?id=1515桥输出两遍(正反)非桥输出一遍 Description According to the Automobile Collision Monitor (ACM), most fatal traffic accidents occur on two-way streets. In order to reduce th...原创 2019-02-03 12:26:12 · 105 阅读 · 0 评论 -
HDU1530 Maximum Clique 最大团(最大完全子图)
http://acm.hdu.edu.cn/showproblem.php?pid=1530 Problem Description Given a graph G(V, E), a clique is a sub-graph g(v, e), so that for all vertex pairs v1, v2 in v, there exists an edge (v1, ...原创 2019-01-23 17:11:14 · 276 阅读 · 0 评论 -
六度空间Floyed最短路变形
https://vjudge.net/contest/270244#problem/R给定一些人,问是否满足六度空间的要求。著名假说,大意是说,任何2个素不相识的人中间最多只隔着6个人,即只用6个人就可以将他们联系在一起,因此他的理论也被称为“六度分离”理论(six degrees of separation)。#include<bits/stdc++.h>using ...原创 2018-11-18 10:27:47 · 167 阅读 · 0 评论 -
Dijkstra最短路 (反向做+去重边)HDU - 2680
#include<stdio.h>#include<string.h>#define N 1500#define INF 0x3f3f3fint n,t,f;int map[N][N];int s[N];int book[N];int d[N];void Dijkstra(int x){ int i,j; memset(book,0,s...原创 2018-11-18 09:18:01 · 373 阅读 · 0 评论 -
Dijkstra最短路 (构造0号顶点)HDU - 2680
http://acm.hdu.edu.cn/showproblem.php?pid=2680给定很多个起点,一个终端,问起点到终点最短路径转化:既然有多个路径,多次最短路?显然不行这时候需要构造一个0号节点,且次节点与各个起点的距离为0,这样就可以求出起点到终端最短路径#include<stdio.h>#include<iostream> #inclu...原创 2018-11-17 22:15:47 · 139 阅读 · 0 评论 -
拓扑排序
一、什么是拓扑排序在图论中,拓扑排序(Topological Sorting)是一个有向无环图(DAG, Directed Acyclic Graph)的所有顶点的线性序列。且该序列必须满足下面两个条件:每个顶点出现且只出现一次。若存在一条从顶点 A 到顶点 B 的路径,那么在序列中顶点 A 出现在顶点 B 的前面。有向无环图(DAG)才有拓扑排序,非DAG图没有拓扑排序一说。例如...转载 2018-11-12 23:51:32 · 153 阅读 · 0 评论 -
无向图割顶与桥
#include<cstdio>#include<cstring>#include<vector>using namespace std;const int maxn=100000+10;int n,m;int dfs_clock;//时钟,每访问一个节点增1vector<int> G[maxn];//G[i]表示i节点邻接的所有节点...原创 2018-11-09 11:49:15 · 171 阅读 · 0 评论 -
邻接矩阵和数组模拟邻接表
1.模拟邻接表#include<bits/stdc++.h>#include<iostream>#include<cstdio>#include <cstring>using namespace std;const int E=100;//E为最大边数const int N=100;//n为最大定点数struct Edge{ ...原创 2018-10-04 10:48:24 · 233 阅读 · 1 评论 -
POJ 3256 Cow Picnic(深搜+vector||深搜剪枝+邻接链表)
The cows are having a picnic! Each of Farmer John's K (1 ≤ K ≤ 100) cows is grazing in one of N (1 ≤ N ≤ 1,000) pastures, conveniently numbered 1...N. The pastures are connected by M (1 ≤ M ≤ 10,00...原创 2018-08-15 09:38:31 · 172 阅读 · 0 评论 -
最小生成树 P1546 最短网络 Agri-Net
题目背景农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场。当然,他需要你的帮助。题目描述约翰已经给他的农场安排了一条高速的网络线路,他想把这条线路共享给其他农场。为了用最小的消费,他想铺设最短的光纤去连接所有的农场。你将得到一份各农场之间连接费用的列表,你必须找出能连接所有农场并所用光纤最短的方案。每两个农场间的距离不会超过100000输...原创 2018-05-08 23:14:54 · 351 阅读 · 0 评论 -
最小生成树之kruskal (加边法)算法思想
n个节点,每两个节点都有权值,求一个树连接起来的最小权值算法分析:一.先把每个节点看成独立的图二.先把每条边权值从小到大排序(利用结构体+sort排序),每次选取最短的边,看是否属于不同子图,若属于不同子图则加入,否则放弃(此处会用到并查集知识,利用自定义finds函数找寻是否属于不同图)。三.重复二操作,直到找到n-1条边#include<bits/stdc++.h&g...原创 2018-05-06 23:35:00 · 629 阅读 · 0 评论 -
Networking POJ1287 最小生成树 Kruscal (根据Kruscal特点,不用判断重边)
http://poj.org/problem?id=1287给定点以及边,这里需要注意的是50个点最多,那么边最多有50*49条,注意数组不要太小了。Kruscal模板题#include<iostream>#include<math.h>#include<stdio.h>#include<string.h>#include<...原创 2018-11-18 21:33:59 · 191 阅读 · 0 评论 -
Networking POJ1287 最小生成树Prim(注意判断重边)或 kruscal不用判断重边
http://poj.org/problem?id=1287prim#include<iostream>#include<math.h>#include<stdio.h>#include<string.h>#include<math.h>#include<algorithm>#define maxn 10...原创 2018-11-18 21:49:51 · 378 阅读 · 0 评论 -
CF图论一-- Ice Skating--DFS||BFS||并查集
、、C. Ice Skatingtime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputBajtek is learning to skate on ice. He's a beginner, so his on...原创 2019-07-21 21:14:29 · 192 阅读 · 0 评论 -
POJ1308 Is It A Tree? 并查集判断有向图是否为树
http://poj.org/problem?id=1308无环cnt=1#include <cstdio>#include <cstring>#include <cstdlib>#include <cmath>#include <string>#include <iostream>#include ...原创 2018-11-21 11:23:35 · 214 阅读 · 0 评论 -
HDU多校--Harmonious Army--最小割建模
Harmonious Army Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 1493Accepted Submission(s): 546 Problem Description...原创 2019-09-20 16:00:38 · 194 阅读 · 0 评论 -
Codeforces Round #111 (Div. 2)--Edges in MST Kruskal+求桥(有重边)
D. Edges in MSTtime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputYou are given a connected weighted undirected graph without any l...原创 2019-09-30 15:04:19 · 275 阅读 · 0 评论 -
Codeforces Round #143 (Div. 2)--E. Cactus--缩点+LCA
https://codeforces.com/problemset/problem/231/EE. Cactustime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputA connected undirected...原创 2019-09-30 20:35:17 · 181 阅读 · 0 评论 -
VK Cup 2012 Finals, Practice Session--C. Trails and Glades--欧拉回路
C. Trails and Gladestime limit per test4 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputVasya went for a walk in the park. The park hasnglades, nu...原创 2019-10-05 21:06:23 · 169 阅读 · 0 评论 -
欧拉图题目总结
1 定义欧拉通路(Euler tour)——通过图中每条边一次且仅一次,并且过每一顶点的通路。欧拉回路(Eulercircuit)——通过图中每条边一次且仅一次,并且过每一顶点的回路。欧拉图——存在欧拉回路的图。2 无向图是否具有欧拉通路或回路的判定G有欧拉通路的充分必要条件为:G 连通,G中只有两个奇度顶点(它们分别是欧拉通路的两个端点)。G有欧拉回路(G为欧拉...原创 2019-10-08 16:56:29 · 3464 阅读 · 0 评论 -
二分图
题意:给你一个N个点M条边的带权有向图,现在要你求这样一个值:该有向图中的所有顶点正好被1个或多个不相交的有向环覆盖.这个值就是 所有这些有向环的权值和. 要求该值越小越好.分析:我们把任意一个顶点i都分成两个,即i和i’. 如果原图存在i->j的边,那么二分图有i->j’的边.下面我们要引出几条结论:...原创 2019-10-10 11:09:07 · 250 阅读 · 0 评论 -
HDU1875(Kruscal)畅通工程再续 (忘记把中间过程输出去掉,wa了N+1次)
http://acm.hdu.edu.cn/showproblem.php?pid=1875#include<iostream>#include<math.h>#include<stdio.h>#include<string.h>#include<math.h>#include<algorithm>using...原创 2018-11-19 20:05:20 · 164 阅读 · 0 评论 -
CF-- Mother of Dragons--最大团
E. Mother of Dragonstime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputThere arencastles in the Lannister's Kingdom and some wall...原创 2019-08-12 22:06:16 · 167 阅读 · 0 评论