图
GMFTBY
for all
展开
-
图的割点 邻接表和邻接矩阵的分析
求图的割点的方法我们就不细说了,详情可以百度,这里主要分析一下为什么要用邻接表而不用邻接矩阵来进行求割点首先我们先来看这两种代码1.邻接表#include"iostream"#include"cstdio"#define inf 99999999using namespace std;int map[100][100];int num[100];int原创 2016-03-20 12:42:54 · 762 阅读 · 0 评论 -
POJ 1062 - 昂贵的聘礼 - 经典题
1.Question:中文题不说什么了2.Solution:本题的难点有两个1.建图2.限制建图:首先,我们需要明确本图G是一个有向图,我们的顶点代表庙我们的物品的编号,图采用邻接矩阵存储,我们的图中的邻接矩阵中存储我们的便宜价格这样的话,我们每个点只要在限制条件下都可以找到1点,那么我们就取到达1点的最小值当作我们的答案限制:本体的限制说的很明原创 2016-11-30 17:57:26 · 916 阅读 · 0 评论 -
POJ 1251 MST Krustral
1.Question:题意:题目中说明了是边数不会超过75,可见是稀疏图,我们直接Krustral 0MS水过来测模板了2.Solution:本题唯一的难点在于理解题意,和图的构建没什么难的3.Code:#include"iostream"#include"cstdio"#include"cstring"#include"algorithm"using n原创 2016-11-15 08:46:10 · 456 阅读 · 0 评论 -
Euler Graph - 欧拉图 详解
1.从哥尼斯堡七桥问题到欧拉图哥尼斯堡七桥问题:18世纪中叶在欧洲普鲁士的哥尼斯堡城内有一条贯穿全市的和河中有两个小岛,现在四块陆地有七座桥连接,引入问题,如何规划线路才能保证我们可以走过所有的边但是却保证不会重复呢这就是著名的哥尼斯堡七桥问题,现在通过图论证明哥尼斯堡问题是不存在解的,第一个发表论文证明了这个事实的人就是欧拉,该论文也是目前为止发现的最早的关于图论的论文,当然,这种问原创 2016-11-19 19:18:34 · 19334 阅读 · 2 评论 -
最短路径算法汇总
最短路径算法精讲1.Floyed2.Dijstra3.SPFA(队列优化Bellman算法)4.Best-First-Search——A算法5.启发式A*6.启发式的A*的平局打破7.目前自学存在的急需解决的问题8.最短路径算法的优劣比较9.各个算法的路径记录的策略1.Floyed(全局最短路径算法)1)数据结构的选择:原创 2016-07-19 21:07:42 · 24194 阅读 · 4 评论 -
NYOJ 118 次小生成树
1.Question:描述南将军率领着许多部队,它们分别驻扎在N个不同的城市里,这些城市分别编号1~N,由于交通不太便利,南将军准备修路。现在已经知道哪些城市之间可以修路,如果修路,花费是多少。现在,军师小工已经找到了一种修路的方案,能够使各个城市都联通起来,而且花费最少。但是,南将军说,这个修路方案所拼成的图案很不吉利,想让小工计算一下是否存在另外一种方案原创 2016-12-03 14:38:23 · 824 阅读 · 0 评论 -
POJ 1502 - Shortest Path - SPFA+Dijstra
1.Question:题意:MPI微处理器求解1号MPI到其他的所有的MPI的最短的路径中的最长的一条Shortest Path版题2.Solution:本题我用了两种思路去求解SPFA+Dijstra在同为邻接表的情况下,运行的时间效率相当但是,我通过左本题发现,我对SPFA的算法的本质理解存在有很大的漏洞3.Code:SPFA/*Problem:原创 2016-11-21 10:47:02 · 553 阅读 · 0 评论 -
POJ 2253 - 最短路变形 SPFA+Dijstra
1.Question:题意:题意:给出青蛙A,B和若干石头的坐标,现青蛙A想到青蛙B那,A可通过任意石头到达B, 问从A到B多条路径中的 最长边 中的 最短距离2.Solution:分析:这题是最短路的变形,以前求的是路径总长的最小值,而此题是通路中最长边的最小值,每条边的权值可以通过坐标算出,因为是单源起点,直接用SPFA算法或dijkstra算法就原创 2016-11-22 19:50:11 · 512 阅读 · 0 评论 -
POJ 3268 - Shortest Path Dijstra+ SPFA
1.Question:题意:输入第一行n,m,t三个数代表的含义分别是图中的n个点,m条有向边,t为初始定点之后的m行代表我们图中的m条有向边在题目要求从t初始点到所有的点点额单源最短路径和将所有的有向边反向之后,我们再求一次单源最短路径求两次的最短路径之和的最大值2.Solution:单元最短路径问题本题因为牵扯到有向边的反向问题,所以我们最好选用矩阵的数据结构来原创 2016-11-23 19:54:04 · 410 阅读 · 0 评论 -
NYOJ - 42 - 并查集+半欧拉图
1.Question:描述 zyc从小就比较喜欢玩一些小游戏,其中就包括画一笔画,他想请你帮他写一个程序,判断一个图是否能够用一笔画下来。规定,所有的边都只能画一次,不能重复画。 输入第一行只有一个正整数N(N每组测试数据的第一行有两个正整数P,Q(P随后的Q行,每行有两个正整数A,B(0输出如果存在符合条件的连线,则输出"Yes",如果不存在符合条件的连线,输原创 2016-11-23 23:15:51 · 403 阅读 · 0 评论 -
POJ 1847 - Shortest Path Dijstra>SPFA
1.Question:又一个火车网络系统输入第一行:n,a,b分别代表网络中 节点的个数,初始节点,终止节点接下来n行分别代表第i个节点的有向边的终点每一行第一个代表的是有向边的个数,之后的第一个有向边的权值是0,之后的权值都是1现在请给出从a到b的最短的路径权值和2.Solution:本题是标准的最短路径的问题并且数据量比较水,所以说,我们的很多的最短路径原创 2016-11-24 14:42:00 · 503 阅读 · 0 评论 -
POJ 3259 - SPFA负权回路 < Floyed
1.Question:POJ 3259农夫约翰在探索他的许多农场,发现了一些惊人的虫洞。虫洞是很奇特的,因为它是一个单向通道,可让你进入虫洞的前达到目的地!他的N(1≤N≤500)个农场被编号为1..N,之间有M(1≤M≤2500)条路径,W(1≤W≤200)个虫洞。FJ作为一个狂热的时间旅行的爱好者,他要做到以下几点:开始在一个区域,通过一些路径和虫洞旅行,他要回到最开时出发原创 2016-11-26 11:54:15 · 619 阅读 · 0 评论 -
POJ 1287 MST Prim+Krustral
1.Code:Prim:/*Problem: 1287 User: lantianheyeqiMemory: 4132K Time: 63MSLanguage: C++ Result: Accepted*/#include"iostream"#include"cstdio"#include"cstring"#include"cstdlib"#define N 100原创 2016-11-17 16:23:03 · 493 阅读 · 0 评论 -
POJ 3625 - MST
1.Question:题意:输入:n,mn代表已经点个数,m表示有多少条边已经连接成功本题是一个稠密图,每两个点之间都有边相连之后的输入的代表两个点之间有连边输出:最小的需求,本题是一个稠密图2.Solution:因为是稠密图,本题的Krustral没有Prim快本题是一个Prim的版题,但是不知道为什么,可能是精度的问题,导致的已知在WA之后莫原创 2016-11-14 11:18:34 · 303 阅读 · 0 评论 -
POJ 1860 - SPFA - 正权回路
1.Question:我们的城市有几个货币兑换点。让我们假设每一个点都只能兑换专门的两种货币。可以有几个点,专门从事相同货币兑换。每个点都有自己的汇率,外汇汇率的A到B是B的数量你1A。同时各交换点有一些佣金,你要为你的交换操作的总和。在来源货币中总是收取佣金。例如,如果你想换100美元到俄罗斯卢布兑换点,那里的汇率是29.75,而佣金是0.39,你会得到(100 - 0.39原创 2016-11-29 17:58:26 · 762 阅读 · 0 评论 -
图的割边(有缺陷的算法)
本算法只能求割一次的情况,如果要求最少的割边次数,本算法毫无用武之地下面是代码段#include"iostream"#include"cstdio"using namespace std;int u[100];int v[100];int w[100];int first[100];int next[100];int n,m;int x,原创 2016-03-21 16:28:19 · 338 阅读 · 0 评论 -
二分图的最大匹配
二分图的最大匹配算法的核心在于扩展增广路,每次只有两个选择,如果当前查找的点没有匹配,那么直接匹配成功否则我们再来看是否我们可以对这个已经匹配的点的已匹配的点的其他出边在进行匹配,使得我们当前这个新的点可以成为被匹配的点,那么我们很容易就可以得到一条新的增广路(匹配的边),那么匹配的边数就加一,直到所有的边我们都已经扫描完毕,此时得到的已匹配的边数就是二分图的最大匹配数其他细节我们在下原创 2016-03-21 23:32:12 · 328 阅读 · 0 评论 -
最大二分图匹配 邻接表优化
我们利用邻接表虽然牺牲了部分的空间,但是我们换取了,在二分图查找出边的操作,可以降低算法的复杂度下面我们在代码中进行解析#include"iostream"#include"cstdio"using namespace std;int u[100];int v[100];int w[100];int first[100];int next[100原创 2016-03-22 08:40:02 · 424 阅读 · 0 评论 -
查找图的割点的算法 基本算法
//额外增加sum数组记录最后可以生成的独立的子树的个数#include"iostream"#include"cstdio"using namespace std;int low[100];int num[100];int n,m;int flag[100];int root;int index=0;int sum[100];in原创 2016-04-22 22:50:42 · 1960 阅读 · 0 评论 -
查找图的割点 邻接表优化
#include"iostream"#include"cstdio"using namespace std;int u[100];int v[100];int w[100];int first[100];int next[100];int n,m;int sum[100];int flag[100];int root;int inde原创 2016-04-22 23:02:34 · 483 阅读 · 0 评论 -
浅析最大二分图匹配算法中记录数组book的真实作用
#include"iostream"#include"cstdio"#include"cstdlib"using namespace std;int u[100];int v[100];int w[100];int first[100];int next[100];int n,m;int match[100];int book[100];int sum=0;boo原创 2016-04-24 09:00:07 · 449 阅读 · 0 评论 -
离散数学 求偏序关系极大极小元的两种思路
1.传递闭包#include"iostream"#include"cstdio"#include"cstdlib"#include"algorithm"using namespace std;int minest[30];int maxest[30];int charnum[30];int num=0;int minnum=0;int maxnum=0;int jie原创 2016-05-19 16:03:15 · 3120 阅读 · 1 评论 -
离散数学 求偏序集极大极小元第三种思路 假链式前向星
链式前向星存储点集的关系#include"iostream"#include"cstdio"#include"cstdlib"#include"cstring"using namespace std;int first[30];int nextk[30];int num=0;int charp[30];int agminest[30];int maxest[30];in原创 2016-05-19 22:13:10 · 1463 阅读 · 0 评论 -
POJ 2240 - SPFA - 正权环(最大路)
1.Question:输入n代表有n个国家之后的n行代表n个国家的名称输入m代表有向边的个数之后的代表我们国家货币之间的汇率现在求,是否存在一条回路是的我们的交换货币之后原本的货币量增多2.Solution:本题是标准的判断回路的问题,我们需要将最短路的标准思路转变一下,首先,本题我们需要找到的是正权回路不是负权回路,我们只需要改变一下松弛策略就好,我们只要将松原创 2016-11-29 09:22:01 · 960 阅读 · 0 评论 -
DAG - AOV - AOE - CPM - Topological-Sort 详解
1.DAG(Directed acycline graph)DAG图,又称有向无环图,简称为DAG,DAG是相对更像是有向树一样的数据结构,用处十分的广泛1.表达式树:DAG可以模拟表达式树,按照数据结构老师的话来说,在操作系统方面的用处更加的广泛2.检查图的环路:我们都知道检查一个无向图是否存在回路是非常的简单的,我们只需要DFS遍历一遍就能判断出来但是我们检查一个有向图原创 2016-11-16 12:17:38 · 2025 阅读 · 0 评论 -
POJ 2349 MST Prim
1.Question:抽象概括题意:现在给你一个些点的坐标,每个坐标都是正整数,现在每个点之间都有一个连边(稠密图)现在求最小生成树MST的第n-s/n-1条边的长度,具体选哪个,我们根据s代销来判断,在程序中我已经写明了2.Solution:标准的稠密图,我们最好用Prim,如果用Krustral的话,最坏的情况500*500的边,很容易超时3.Code:#inclu原创 2016-11-16 20:00:25 · 464 阅读 · 2 评论 -
NYOJ 99 - 欧拉图 单词拼接
1.Question:描述给你一些单词,请你判断能否把它们首尾串起来串成一串。前一个单词的结尾应该与下一个单词的道字母相同。如alohadogarachnidgophertigerrat 可以拼接成:aloha.arachnid.dog.gopher.rat.tiger原创 2016-11-26 16:35:51 · 651 阅读 · 0 评论