算法-图论
数据结构图论算法
键盘上的艺术家w
努力奋斗
展开
-
普里姆算法 图论 南阳38题 布线问题
思路:此题就是求最小生成树。这里可以用 普里姆算法 和克鲁斯卡尔算法求最小生成树。我这里用的是普里姆,就给大家介绍一下普里姆算法把。首先 有一个点集合 用来保存顶点。当所有顶点都存进去。则结束查找。然后根据第一个点将他相连的边存入边集合中选择权最小的边。然后找到最小的边的对面那个顶点保存到点集合里去然后又把这个点所相连边存到边集合中去。然后选择最小的边。一直下去知道所有点全部都找完为止。原创 2017-05-03 23:07:51 · 368 阅读 · 0 评论 -
Dijkstra算法一个人的旅行 杭电oj
思路:迪杰斯特啦算法大家可先了解下迪杰斯特算法题,迪杰斯特拉算法是求一个点到其他顶点的最短路径记得那里提示两个地方不止一条路径所以要保存最小的路径;一个人的旅行 Time Limit : 1000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other)Total Submission(s) : 14 Acce原创 2017-05-06 22:42:02 · 516 阅读 · 0 评论 -
hdu1102 最小生成树
/* 思路:水题,直接先将连接起来的边处理掉,将他们连接到一个集合 用并查集,其余的就是克鲁斯卡尔了*/#include#include#include#include#includeusing namespace std;struct edge{ int from,to,w;};int n,m;vectoredges;int map[101][101];原创 2017-07-29 20:24:01 · 242 阅读 · 0 评论 -
hdu 1317 spfa 算法 判断正环
/*题意 最多有100个房间,每个房间里有正能量和负能量,然后你的初始能量为100从1开始走,走到n能不能能量为正,走到每一个房间的能量必须大于0,输入输出的意思是;一个有n个房间,后面的n行表示第一个表示 房间的权,第二个 k 表示他可以连到几个房间,后面的 k个数表示第i个房间与他相连,权为p思路:这里是用的spfa算法判断正环。百度百科中说道 当边有负权的时候就要用到spfa算法原创 2017-07-18 07:45:42 · 495 阅读 · 0 评论 -
hdu 1217 最短路,spfa
ArbitrageTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 8101 Accepted Submission(s): 3750Problem DescriptionArbitrage is the原创 2017-07-17 20:13:38 · 205 阅读 · 0 评论 -
hdu1690 floyd
题意:求两点之间的最小花费。题目开始给了个表,第一行八个数就是给的表,前四个数是距离,后四个点是花费,表示超过第一个点的距离就是对应第一个花费。第二行是n和m,后面n行是 n个点的距离,他们都是在x轴上的距离距离0点的距离,思路 先算出各个点的距离根据距离得到花费,然后用floy求最小花费,这里都要用long long int 才可以,不然会出错,然后点有可能到负数那边去。代码:原创 2017-07-22 17:10:16 · 210 阅读 · 0 评论 -
hdu 1595 BFS 记录边+SPFA
/*题意:从点1到点n有一条最短路,但是这条最短路上有条边坏了,但是不确定是哪条,要你求坏一条边后的最大的最短路输入 输出 n,m,n个点,m条边。输出最大的最短路思路:用bfs先遍历求出1到n的最短路并保存,然后用SPRA算法枚举最短路上的任和一条边,求最短路,然后比较出最大值即可*/#include#include#include#include#includeusing原创 2017-07-19 22:16:29 · 248 阅读 · 0 评论 -
hdu1596
用佛洛依德,迪杰斯特拉都可以做。最安全的就是最大路,将转移方程改为,dis【i】=MAX(dis[u]*map[u][i],dis[i]);即可;代码:迪杰斯特拉#include#include#include#includeusing namespace std;double dis[1001];double map[1001][1001];bool vis[100原创 2017-07-19 23:33:29 · 382 阅读 · 0 评论 -
hdu3367
/*求伪森林,这种森林由一些图组成,每个图最多只能有一个环,要你求最大权值的伪森林思路:用克鲁斯卡尔合并并查集的时候 判断是不是有相同的祖先,如果是则判断这个祖先有没有环,如果有环那么这条边,就不能要因为要了,就多了个环,而题目规定是每个图一个环,然后加入这条边连接的是两个不同的并查集,那么判断这两个并查集有没有环如果都有环,则不能把他们连接成一个并查集,还是如题意所说只有一个环。连接了原创 2017-08-01 21:52:46 · 436 阅读 · 0 评论 -
hdu2433 最短路+思维
题意:给你n个点m条双向边,边的权值为1,要你求除去第i条边后任意两点的最短路的权值的和。思路:先求点到其他点的最短路并且把路径记录下来,如果直接除去一条边求一次任意两点的最短路那肯定超时了,如果这条边在这个点到其他点最短路路的边中,那么去掉这条边,就对原来的最短路径有影响,那么最短路径就要重新算,如果这条边不在原来的最短路径中,那么直接就跟原来的最短路是一样的,也就没必要在重新求了,加上输出原创 2017-07-24 23:01:49 · 544 阅读 · 0 评论 -
最短路 ~Interesting Calculator 湖南省第九届程序设计竞赛
1336: Interesting CalculatorSubmit Page Summary Time Limit: 2 Sec Memory Limit: 128 Mb Submitted: 858 Solved: 210 DescriptionThere is an interesting calculator.原创 2017-07-17 10:13:17 · 274 阅读 · 0 评论 -
福州大学acm Problem 2207 以撒的结合
Problem 2207 以撒的结合 Accept: 72 Submit: 239Time Limit: 1000 mSec Memory Limit : 32768 KB Problem Description小茗同学最近在认真地准备比赛,所以经常玩以撒的结合。《以撒的结合》是一款由Edmund McMillen,Florian Himsl 开发,原创 2017-06-15 09:35:09 · 612 阅读 · 0 评论 -
超详细Tarjan算法总结,求强连通分量,割点,割边,有重边的割边
Tarjan是一个人,他一身中发明了很多算法,就这几个算法最为出名。1、求有向图的强连通分量,那么什么是强连通分量呢,就是一个顶点集合,任意两个顶点间都可以互相到达。如果图中任意两点可以互相到达,则此图强连通。TARJAN是基于dfs算法的基础上,所以也会得到一颗搜索树。那么他是怎么运行的呢,首先大家看着两个数组 dfn[i],和low[i]dfn[i]表示第i个节点深原创 2017-06-14 19:50:46 · 4491 阅读 · 2 评论 -
普里姆最小生成树算法 南阳38题
思路:这个题目就是从最小生成树,再加上最少的楼连接到外面电缆的花费。给大家讲解一下普里姆算法:一个点集合 ,一个边集合。初始状态将出发的点加入点集合中,然后把他连接到其他点的边加入到边集合中。然后选出一条最小价值的边。然后在把那个价值最小的边另外的一个顶点加入到点集合中。然后循环下去。直到所有点都加入到点集合中。布线问题时间限制:1000 ms | 内存限制:65535原创 2017-05-04 08:35:47 · 690 阅读 · 0 评论 -
tarjan算法 杭电迷宫城堡。
思路:这题运用到tarjan算法 刚看这个算法一脸蒙b,然后通过阅读别人的博客算是掌握的差不多了。这个算法中用到两个数组第一个dfn[],low[],第一个数组是用来记录深搜的顺序的,第二个数组是用来保存i节点能够追溯到他这个强连通分量最先深搜到的那个节点。具体的看算法有关键注释。我这里简单说下这个算法推荐大家看下这个博客,他这里讲的非常的详细,http://blog.csdn.net/mengx原创 2017-05-15 11:39:06 · 407 阅读 · 0 评论 -
图论南阳155题 城市平乱
思路:刚开始用了佛洛伊德算法,没想到超时了。后来改用多次迪杰斯特算法就过了。迪杰斯特算法是求出源点到其余点的最短距离 这里是求出队伍到危险去的距离然后找出最小的那个然后输出就ok了,注意他说两个城市之间可能有多条路径此时我们要选一条最小的路;城市平乱时间限制:1000 ms | 内存限制:65535 KB难度:4描述 南将军统领着N个部队,这N个部队原创 2017-05-06 22:02:05 · 254 阅读 · 0 评论 -
六度分离 弗洛伊德算法
此题是佛洛伊德算法的模板题目 给大家讲一下佛洛伊德算法 此算法是属于动态规划。d[i][j]表示i到ji到j的最短距离。i点到j点的距离假如有一点u是的i经过u到j点的距离比原来的直接到的距离更加短。则d【i】【j】=min(d【i】[u]+d[u][i])这是经过一个点加入在这基础上还能经过一点w使得距离更加短。在这里简单的说下详细的大家可以看下这个网址http://developer.51c原创 2017-05-06 22:25:37 · 625 阅读 · 0 评论 -
求次最小生成树,南阳118题 修路方案
思路:这个题就是求次最小生成树,解法 先求一遍最小生成树,然后在去掉其中一条边求。如果去掉一条边求得的生成树的权值等于之前求的的那条则表明有多条则输出yes,下一次循环把这条边加上,在去掉下一条。需要注意的是有可能去掉这一条边就构不成最小生成树了 不联通的。我这里用的是克鲁斯卡尔算法 。这题是用并查集实现的,要是不知道并查集的朋友可以先百度 看看并查集 这个算法;修路方案时原创 2017-05-17 20:14:20 · 377 阅读 · 0 评论 -
Choose the best route dijst算法
思路:一开始想着多次dijst但是超时了 后来在网上看到一个超点汇集。就是将所有开始的点都使得与0点有一条边,最好这条边的权值为0,然后从0点开始求。这就是求0点到其他点的最短路径。但是0点只与开始点相连了而且他们的权值为0,所有dijst算法求的时候就选择了最短到终点的边。One day , Kiki wants to visit one of her friends. As she i原创 2017-05-20 09:33:43 · 423 阅读 · 0 评论 -
Tarjan 算法超级详解
[置顶] 强连通算法--Tarjan个人理解+详解标签: Tarjan算法详解强连通分量强连通算法2016-06-14 17:31 1688人阅读 评论(4) 收藏 举报 分类:算法(10) 版权声明:0.0小白有写的不好不对的地方请指出~首先我们引入定义:1、有向图G中,以顶点v为起点的弧的数目称为v的出度,记做de转载 2017-05-20 08:32:27 · 569 阅读 · 0 评论 -
qwb与学姐---之江学院第0届校赛最大生成树+lca
Problem H: qwb与学姐Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 168 Solved: 59[Submit][Status][Web Board]Descriptionqwb打算向学姐表白,可是学姐已经受够了他的骚扰,于是出了一个题想难住他:已知一幅n个点m条边的无向图,定义路径的值为这条路径上最短的原创 2017-06-05 22:02:12 · 413 阅读 · 0 评论 -
超级详细讲解匈牙利算法
二分图匹配,江湖称二分匹配,图论相关算法。现在给出两个集合,我们拿约会来举例子。一方是男生集合,一方是女生集合,女生都比较内敛,对不认识的男孩纸并不喜欢一起约会,所以这里边就要有人际关系的问题了。这里给男生编号n1,n2.....nn;女生编号v1v2....vn;下面给出女生认识的男生的列表:v1 :n1 ,n2. v2 :n2, n3.v3 : n1转载 2017-05-21 22:41:40 · 14830 阅读 · 9 评论 -
图论专题训练
最小生成树 + 并查集【HDU】1213 How Many Tables 基础并查集★1272 小希的迷宫 基础并查集★1325&&poj1308 Is It A Tree? 基础并查集★1856 More is better 基础并查集★1102 C原创 2017-08-24 21:50:25 · 719 阅读 · 0 评论