图论
Melicent1
这个作者很懒,什么都没留下…
展开
-
归并两个线性表
巳知线性表LA和线性表LB中的数据元素按值非递减有序排列,现要求将LA和LB归并为一个新的线性表LC,且LC中的元素仍按值非递减有序排列。 求解:设两个指针:i指向LA中的元素a, j指向LB中的元素b。 LC中的元素c=a(a时)或者c=b(a>b)。 LA={3,5,8,11} LB={2,6,8,9,11,15,20}原创 2013-05-30 10:52:24 · 1976 阅读 · 0 评论 -
hdu 3592 差分约束
http://acm.hdu.edu.cn/showproblem.php?pid=3592题意:有N个人按照1-N 的顺序排成一排,给你X个关于他们位置的关系,如:a, b ,c,则说明编号为a的人在标号为b 的人的前面(话说我实在没在原文中看到a必须在b前面,除非这句 Assume that there are N (2 ),且两人最多相隔c距离,再给你Y给位置关系,给出的是a和b两个人至原创 2013-06-14 19:48:32 · 671 阅读 · 0 评论 -
POJ 1511 spfa求最短回路
http://poj.org/problem?id=1511题意:(图论147)。求从起点到各个点的最短回路。分析:用两次spfa就行了。第一次spfa是从出发点start到各个点,求一次最短距离,第二次spfa是从各个点反向求到出发点的最短距离。处理:第一次spfa只要保存正向边,第二次用反向边进行spfa就可以了。最后把两次求得的距离相加就是最短回路。View Code原创 2013-06-14 19:47:51 · 693 阅读 · 0 评论 -
POJ1847 floyd求最短路径
http://poj.org/problem?id=1847题意:这题关键是题意理解了就会做了。大致题意:现在有一铁路网络,有n个交叉点,和一些开关。通过开关可以改变路线方向,使其能驶向其他交叉点。开关的初始状态已知,即(初始直接某两点直接相连)。A到B.问从出发点到目的地最少要动多少开关才能到达。分析:想想就会发现是最短路问题。假如要从1--3如果有直接连接的边则不要动开关,原创 2013-06-14 19:47:54 · 572 阅读 · 0 评论 -
POJ2394 dijksta||spfa求最短路
题意:求各个点到起点1的距离是否分析:dijkstra。求起点到各个点的最短距离和m判断一下就行了。坑爹的是我wa了13次。就是在一个下标出问题的,白白费了4个小时。不认真。就是下面的sum.原因自己分析。嗨,死在这里了。我把i放在coutnts[]里面了,原因还要说吗????View Code // I'm lanjiangzhou//C#include #inc原创 2013-06-14 19:47:56 · 589 阅读 · 0 评论 -
POJ2457 dijksta求最短路&&输出走过的路径
http://poj.org/problem?id=2457题意:求起点1到终点m的最短距离。这个可以spfa||dijkstra。这题关键的是要输出从1--m走过的路径。用path[]记录下,每一步的祖先,用shortest[]逆序输出即可。这题re了n次。到现在也不理解,为什么先if(dis[m]==INF){//为什么先判断就不会re.不明白 printf("-原创 2013-06-14 19:47:58 · 906 阅读 · 0 评论 -
hdu 1598 并查集+贪心---其实就是kruskal的思想
http://acm.hdu.edu.cn/showproblem.php?pid=1598题意:中文的就不说了。分析:题目要求从起点到终点的最大值与最小值的差最小,第一感觉是floyd,但是要保存经过的每条边,这就卡住了。后来发现从起点到终点也可以用并查集做,想想从起点到终点肯定要属于同一个集合,这就行了。其实这题就是用的kruskal的思想。具体看代码。还有一个地方我觉得很奇怪为什原创 2013-06-14 19:48:17 · 543 阅读 · 0 评论 -
ZOJ 2770差分约束
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1770题意:参看图论200分析:差分约束关键还是建图。嗨,图。而且差分约束感觉还有数学的思想。偶数学不好。View Code // I'm lanjiangzhou//C#include #include #include string.h>原创 2013-06-14 19:48:23 · 621 阅读 · 0 评论 -
hdu 2680 dijkstra反向建图
http://acm.hdu.edu.cn/showproblem.php?pid=2680题意:求起点到终点的最短距离,注意这题是有向图,还有这题先给的是终点,起点有多个(如果是无向图的话先给起点终点是一样的,先给终点细细体会稍微有点区别)。分析:先给终点,起点有多个。我一开始知道是有向图但就是按照无向图做的,好吧,wa了。然后该了该,还是wa。认真读题觉得没问题又提交了还是wa。然后觉原创 2013-06-14 19:48:30 · 495 阅读 · 0 评论 -
hdu 1233 Kruskal求最小生成树
http://acm.hdu.edu.cn/showproblem.php?pid=1233题意:连接所有村子的最短路径。分析:最小生成树。注意:双向图。嗨,表示水题不认真又wa了 3次。View Code // I'm lanjiangzhou//C#include #include #include string.h>#include #includ原创 2013-06-14 19:48:39 · 522 阅读 · 0 评论 -
hdu 1548 最小生成树dijkstra,关键建图
http://acm.hdu.edu.cn/showproblem.php?pid=1548题意:一个特别的电梯,按up可升上k[i]层,到大i+k[i]层,down则到达i-k[i]层,最高不能超过n,最低不能小于1,给你一个起点和终点,问最少可以按几次到达目的地。分析:把n转换为一个n*n初始化为0的数组,后对每一层可到达的楼层加上一条边为1,这样就转换为求两点之间的最短路问题。原创 2013-06-14 19:48:28 · 592 阅读 · 0 评论 -
hdu 3666差分约束
http://acm.hdu.edu.cn/showproblem.php?pid=3666题目描述:http://blog.sina.com.cn/s/blog_64675f540100l52h.html给你一个N*M的矩阵,给你两个数L和U(L L 输出YES OR NO。解题报告:转换成:Xij * Ai – U * Bj 差分约束中的xi – xj 那么有了系数,只需去log把乘法转化原创 2013-06-14 19:48:35 · 495 阅读 · 0 评论 -
hdu 1241 dfs求连通分量个数
http://acm.hdu.edu.cn/showproblem.php?pid=1241题意:求连通分量的个数,8个方向。做过好几次了,表示对dfs,bfs真没感觉。嗨。哭死。。。View Code // I'm lanjiangzhou//C#include #include #include string.h>#include #include原创 2013-06-14 19:48:42 · 574 阅读 · 0 评论 -
hdu 1856 并查集——ac的不一定正确
这次深深体会到ac的代码不一定正确。呵呵。cry_mas前一段才和我说起。我还半信半疑。话说好久以前他就说过类似的话,当时水平太菜了。现在深深体会到ac的代码不一定正确。这要坑死了啊,正式比赛碰到真是惨到家了。以后我还是多想点数据的说。多想2组。去年省赛的时候是我第一次认认真真的想其他的数据,现在应该培养这方面的能力,要不然比赛的时候很吃亏。还有做题前先想想时间复杂度。貌似还是去年比赛的时候那题背原创 2013-06-14 19:48:46 · 489 阅读 · 0 评论 -
hdu 1161 kruskal求最小生成树注意建图
题意:求链接所有点的最短路径。分析:最小生成树,kruskal.嗨。居然wa了2次。受不了啊。View Code // I'm lanjiangzhou//C#include #include #include string.h>#include #include #include //C++#include #include #incl原创 2013-06-14 19:48:08 · 472 阅读 · 0 评论 -
POJ 3615 floyd 求任意起点终点的最短路
http://poj.org/problem?id=3615题意:求起点到终点的最短路,不存在则输出-1.这题居然tle两次,把floyd放在外面就行了。View Code // I'm lanjiangzhou//C#include #include #include string.h>#include #include #include //C+原创 2013-06-14 19:48:03 · 802 阅读 · 0 评论 -
fleury算法输出欧拉回路
1、定义:欧拉通路(回路):通过图(无向图或有向图)中所有边一次且仅一次行遍图中所有顶点的 通路(回路)称为欧拉通路(回路)。欧拉图与半欧拉图:具有欧拉回路的图称为欧拉图,具有欧拉通路而无欧拉回路的 图称为半欧拉图。桥:设无向图G=,若存在边集E的一个非空子集E1,使得p(G-E1)>p(G),而对 于E1的任意真子集E2,均有p(G-E2)=p(G),则原创 2013-06-14 19:47:49 · 4610 阅读 · 0 评论 -
先序遍历二叉树
#include#includetypedef struct BiTNode{ char data; struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;void CreateBiTree(BiTree &T){ char ch; ch=getchar(); if(ch!='#') { if(!(T=(BiTNode*)mal原创 2013-05-30 10:52:30 · 680 阅读 · 0 评论 -
按层次顺序(同一层自左至右)遍历二…
#include#include#define MaxLength 100typedef struct BiTNode//二叉树结构{ char data;//结点的值 struct BiTNode *lchild,*rchild;//左子树 ,右子树}BiTNode,*BiTree;void CreateBiTree(BiTree &T){ char ch; ch=getc原创 2013-05-30 10:52:39 · 2012 阅读 · 1 评论 -
先序遍历建立二叉树,求二叉树的高…
http://blog.163.com/wenxianliang08@126/blog/static/83583263201041195026633/#include #include#includetypedef char ElemType;typedef struct BiTNode{ //定义结点 ElemType data;原创 2013-05-30 10:52:35 · 1391 阅读 · 0 评论 -
求二叉树的深度
#include#includetypedef struct BiTNode//二叉树结构{ char data;//结点的值 struct BiTNode *lchild,*rchild;//左子树 ,右子树}BiTNode,*BiTree;int depthval=0;void CreateBiTree(BiTree &T){ char ch; ch=getchar();原创 2013-05-30 10:52:37 · 536 阅读 · 0 评论 -
用栈实现数制转换
算法思想如下:当N>0时重复1,21、若 N≠0,则将N % r 压入栈s中,执行2;若N=0,将栈s的内容依次出栈,算法结束。 2、用N / r 代替 N。void conversion () { InitStack(S); scanf ("%d",N); while (N) { Push(S, N % 8); N = N/8;原创 2013-05-30 10:52:26 · 3074 阅读 · 0 评论 -
求二叉树叶子结点数
#include#includetypedef struct TNode{//二叉树结构 char data;//结点的值 TNode *lchild;//左子树 TNode *rchild;//右子树}*BiTree;void CreateBiTree(BiTree &T)//中序遍历方式创建二叉树,输入#代表该结点为空{ char ch; ch=getchar(); i原创 2013-05-30 10:52:33 · 3017 阅读 · 0 评论 -
POJ 图论 专辑
转自http://blog.csdn.net/allenjy123/article/details/6627248红色已经AC一、最短路POJ 2449 Remmarguts' Date(中等)http://acm.pku.edu.cn/JudgeOnline/problem?id=2449题意:经典问题:K短路解法:dijkstra+A*(rec),方法很转载 2013-06-02 19:26:23 · 581 阅读 · 0 评论 -
POJ 3295 spfa判断是否存在负权回路
http://blog.sina.com.cn/s/blog_99ca2df50101jtk3.html这里前几天刚刚写过就不写了。题意:判断是否存在负权回路。用spfa.View Code //ac// I'm the Topcoder//C#include #include #include string.h>#include #includ原创 2013-06-14 19:48:01 · 577 阅读 · 0 评论 -
hdu 1198 dfs||并查集求连通分量个数,关键建图
题意:有A~K共9种类型的地步,每耕田上方的沟渠是不合的(它们连接的出口不合)。然后由这些类型的田构成一个n*m大小的更大的田,因为相邻两个地步的沟渠可能可以相通(有接口),所以只要相通的那些地步只须要一个水源就可以了。求起码须要几许个水源。解析:可用bfs,dfs做,不过用并查集更便利点。 用并查集只须要断定一个田四周的四个田,若是有接口,那么就把这两个田归并成一棵树,最后断定几棵树原创 2013-06-14 19:48:10 · 586 阅读 · 0 评论 -
hdu 1385 最短路+输出字典序--好题
http://acm.hdu.edu.cn/showproblem.php?pid=1385题意:求起点到终点的最短路,注意点是有权值的。然后要按找字典序输出路径。分析:说实话这题卡了我好久,从数据没过到坑坑爹爹的把数据过了,再到改啊改一直wa,我已经很满足了因为我耐住了性子,其实我一点也不希望他ac,要不然太没劲了。好吧这题wa了我18次。关键的地方就是按照字典序输出,由于我以前是按照另原创 2013-06-14 19:48:19 · 526 阅读 · 0 评论 -
hdu 1142 最短路+记忆化深搜---好题
http://acm.hdu.edu.cn/showproblem.php?pid=1142题意:他的办公室用1表示,家用2 表示,从1到2,中间可能会经过其它节点,而该节点可走的原则是:假设他此时在A处,B与其相邻,只有当B到2 路线中存在一条比A到2 的任意一条路径都短的路径,才能走B。问这样的路线有多少种?分析:记忆化搜索不太会,这题难度就在这里。有挑战好玩。下面是大神的分析。欣赏下原创 2013-06-14 19:48:26 · 531 阅读 · 0 评论 -
hdu 1875 Krustal最小生成树
http://acm.hdu.edu.cn/showproblem.php?pid=1875题意:求链接所有岛屿的最小生成树。中文题就不说了。分析:kruskal算法。用sqrt的时候ce了一次。然后数组开小了re了一次。不应该犯这种低级错误了。反思己过。View Code // I'm lanjiangzhou//C#include #include #i原创 2013-06-14 19:48:37 · 672 阅读 · 0 评论 -
hdu 1213 并查集用Kruskal算法
http://acm.hdu.edu.cn/showproblem.php?pid=1213题意就是说,有n个人参加的party,要准备多少张桌子,使得任意桌子上坐的人都是有联系的。所谓有联系的就是说:比如A 和 B,如果他们两认识,或者存在一些人 C D E...使得A 、B能够认识。求最少要准备的桌子的数量。解法:直接用并查集算法解决。分析:把昨天的代码拿来稍微改了下,果原创 2013-06-14 19:48:44 · 541 阅读 · 0 评论 -
poj 3469 网络流最小割
http://poj.org/problem?id=3469Dual Core CPUTime Limit: 15000MS Memory Limit: 131072KTotal Submissions: 15941 Accepted: 6926Case Time Limit: 5000MSDescription原创 2013-06-14 19:50:18 · 660 阅读 · 0 评论