图论
Self-Discipline
在校大学生
展开
-
HDU 5137 How Many Maos Does the Guanxi Worth(枚举+最短路径)
题目:点击打开链接 题意:给出一个无向图n个点m条边,断开其中的除了1和n之外的其中一个点的所有边,让最短路最长。思路:依次枚举除了1和n之外的其中一个点的所有边的最短路的结果,并且求出最大值。代码:#include<iostream>#include<cstring>#include<algorithm>using namespac...原创 2017-08-30 21:32:24 · 224 阅读 · 0 评论 -
次小生成树模板(以POJ 1679为例)
题目:点击打开链接题意:判断生成树的唯一性,唯一则输出权值,不唯一输出Not Unique!分析:显然,可以转化为求次小生成树,次小生成树权值=最小生成树,则不唯一。我这里用的是kruscal算法,更加简单易用。入门参考https://blog.csdn.net/li1615882553/article/details/80011884和https://www.cnblogs.com/rad...原创 2018-10-16 16:29:08 · 177 阅读 · 0 评论 -
k短路模板(以POJ 2449 为例)
题目:点击打开链接题意:给出一个图,然后给出一个起点个一个终点,求这两点间的第K短路。本题中是可以走重复的路的,所以如果一张图中有一个环的话,无论求第几短路都是存在的。路径长度一样,经过的边集不同属于两种不同的情况。分析:k短路模板题,A*+dijkstra,注意当s == t的时候,需要计算第k+1短路。因为s到t这条距离为0的路不能算是这k短路里边。A*入门参考https://www.c...原创 2018-10-15 22:22:18 · 257 阅读 · 0 评论 -
Poj 3169 Layout
题目:点击打开链接题意:一共有n头牛,有ml个关系好的牛的信息,有md个关系不好的牛的信息,对应输入的第一行的三个元素,接下来ml行,每行三个元素A,B,D,表示A牛和B牛相距不希望超过D,接下来md行,每行三个元素A,B,D表示A牛和B牛的相距至少要有D才行。求1号牛和n号牛的最大距离,如果距离无限大输出-2,如果无解输出-1。分析:差分约束入门题,差分约束的本质是差分+约束条件,可以转化为...原创 2018-10-14 17:00:19 · 212 阅读 · 0 评论 -
POJ 1511 Invitation Cards
题目:点击打开链接题意:有向图,求从起点1到每个点的最短路然后再回到起点1的最短路之和。(保证有解)分析:开始用SPFA+vectorTLE了,改成前向星就过了。图上没有负环最好还是用堆优化后的dijkstra。AC代码(前向星):#pragma comment(linker, "/STACK:102400000,102400000")///#include<unordere...原创 2018-10-14 13:19:10 · 124 阅读 · 0 评论 -
SPFA模板(vector版本)
入门参考https://www.cnblogs.com/bofengyu/p/5004398.html。#pragma comment(linker, "/STACK:102400000,102400000")#include<unordered_map>#include<unordered_set>#include<algorithm>#incl...原创 2018-10-14 13:13:03 · 495 阅读 · 0 评论 -
Bellman-Ford算法模板(以POj 3259为例)
题目:点击打开链接题意:题目的大意是有F个农场(F组输入数据),每个农场有N个牧场,M条双向路径,W个虫洞,虫洞是单向的,可以实现时间旅行,返回到以前某个时间。问从某个牧场出发,经过若干路径和虫洞,能不能在自己没有离开出发地时回到出发地,见到自己。分析:其实就是判断是不是存在负环,用Bellman-Ford算法求就可以了。 当图中存在负权环时,就能够在出发之前回到出发地,见着自己,将虫洞的权值...原创 2018-10-13 13:57:41 · 259 阅读 · 0 评论 -
牛客国庆集训派对Day6 J-最短路
题目:点击打开链接题意:略。分析:(lca+100次最短路)先把题目给的边存起来,先取n-1个边(不能有环)构成生成树,然后求lca,对于漏掉的边u<-->v,假设x到y的最短路不走这条边,那么其最短路有可能是lca的距离,假设走这条边,必走u,那么我先求出起点为u到所有点的最短路,x到y的距离就是min(lca , d[u][x]+d[u][y])。(不明白的可以画个草图)由于边...原创 2018-10-17 22:22:14 · 241 阅读 · 0 评论 -
牛客国庆集训派对Day3 J Graph Coloring I
题目:点击打开链接题意:判断一个图是否能用两种颜色染色,满足相邻点的颜色不同。分析:可以直接对图进行染色,如果发现当前点的颜色与已经染色的相邻点相同,则存在奇环(环山点的总数为奇数)。也可以判断是否为二分图,因为二分图与奇环互斥。证明:假设二分图中的环是奇数环。设一个环,x1,x2,x3,,,,x(2*k-1),k>=1且为整数。相邻两点有边连接,x1与x(2*k-1)相连。...原创 2018-10-04 09:49:43 · 174 阅读 · 0 评论 -
牛客国庆集训派对Day3 I Metropolis
题目:点击打开链接题意:略。分析:多源点最短路,只要两个不同源点的最短路相遇,我们就更新两个源点的答案。代码:#pragma comment(linker, "/STACK:102400000,102400000")#include<unordered_map>#include<unordered_set>#include<algorithm>...原创 2018-10-11 17:07:43 · 175 阅读 · 0 评论 -
堆优化后的dijkstra算法模板(以hdu2544为例)
vector实现版,优点是代码量较少,缺点是常数较大。#pragma comment(linker, "/STACK:102400000,102400000")#include<unordered_map>#include<unordered_set>#include<algorithm>#include<iostream>#incl...原创 2018-10-11 16:00:44 · 510 阅读 · 0 评论 -
CSU 2005 Nearest Maintenance Point
题目:点击打开链接题意:给一个n个节点m条边的带权无向图,给出s个援助节点,有q个询问,每次问一个节点周边最短距离的援助节点有哪些。分析:多源点最短路,最短路的变形,使用堆优化的dijkstra算法,把s个援助节点当起点(假设有一个超级原点,和s个援助节点有距离为0的边,就化简成了单源最短路模型),搜到所有节点的最短路,用bitset的位运算传递状态,如果有多个起点的某个节点的最短距离相同...原创 2018-10-11 15:29:04 · 160 阅读 · 0 评论 -
基于链式前向星的有向图无向图的缩点模板(tarjan)
对于无向图的缩点:void tarjan(int u,int fa){ dfn[u]=low[u]=++times; q[++head]=u; for(int i=Laxt[u];i;i=Next[i]){ if(To[i]==fa) continue; if(!dfn[To[i]]) { tarjan(...原创 2018-07-03 11:37:45 · 1418 阅读 · 2 评论 -
最大流之Edmonds-Karp算法(模板)
传送门:点击打开链接 #include <iostream>#include <queue>#include <cstring>#include <cstdio>using namespace std;const int N = 210;const int INF = 0x7FFFFFFF;int n,m,map[N][N]...原创 2018-03-21 16:20:09 · 520 阅读 · 0 评论 -
CSU - 2073 (网络流)
传送门:点击打开链接题意:求最多多少个WIN,横竖或者三角形形状。思路:典型的网络流问题,网络流一类的问题核心在于建模,具体的算法实现不是那么重要,这里主要用到了拆点+建源,拆点主要是为了限流,我这里用的是dinic算法。 代码: ///dinic + 邻接矩阵 920ms#include<iostream>#include<cstdio>#...原创 2018-04-25 19:24:33 · 215 阅读 · 0 评论 -
POJ1236 Network of Schools(强连通分量+缩点)
Network of SchoolsTime Limit: 1000MS Memory Limit: 10000K Total Submissions: 20228 Accepted: 7969 DescriptionA number of schools are connected to a computer network. Agreements...原创 2018-01-14 08:40:35 · 383 阅读 · 0 评论 -
求补图的联通块数(bzoj 1098+codefoces920E)
思路:链表加BFS的强优化,具体是这样的:我们先把所有的节点挂链,然后再把链表上的一个节点入队,遍历其在原图上相邻的点并做上标记,那么这时没有打上标记的点在补图上和当前节点一定有边相连因而一定在同一个联通块中,所以再把这些没有打上标记的点入队,并且在链表中除去,继续这个过程,直到队列为空时这个联通块就找出来了,再取链表上还存在的点入队寻找一个新的联通块,直到删掉所有点为止,复杂度降为了O(n + ...原创 2018-02-25 20:13:24 · 518 阅读 · 0 评论 -
最短工期-拓扑排序模板
题意:现给定一个项目中各个任务之间的关系,请你计算出这个项目的最早完工时间。(项目里程碑的数量N(≤100)和任务总数M。这里的里程碑从 0 到N−1编号。随后M行,每行给出一项任务的描述,格式为“任务起始里程碑 任务结束里程碑 工作时长”,三个数字均为非负整数,以空格分隔。)代码:#include<bits/stdc++.h>using namespace st...原创 2019-03-18 16:45:23 · 982 阅读 · 0 评论