
Algorithm_图论
文章平均质量分 80
niuox
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Hoj 1614 Communication Planning for Phobos
本题是求最小生成树的典型题目。 题目连接:http://acm.hit.edu.cn/hoj/problem/view?id=1614 采用Prim算法求最小生成树。 关于如何求球面上任意两点A(a1,b1)和 B( a2,b2 ) 的球面距离,a1,a2是经度,b1,b2是纬度,参考公式: r * acos(cos(a1 - a2) * cos(b1) * cos(b2) + sin(原创 2013-02-11 16:33:45 · 767 阅读 · 0 评论 -
Hoj 2421 Hie with the Pie
题目链接:http://acm.hit.edu.cn/hoj/problem/view?id=2421 求多源最短路,用Floyed,本题所经历的节点不确定,用排列组合(next_permutation(a,a+n))依次遍历即可。 #include #include #include #include #include #include #include #include原创 2013-04-15 17:04:00 · 700 阅读 · 0 评论 -
Hoj 1168 Trees on the level
题目链接:http://acm.hit.edu.cn/hoj/problem/view?id=1168 刘汝佳《算法竞赛入门经典》101页的原题,层序遍历一棵树即可。 本题实际上联系字符串处理上面,直接使用strchr()字符串即可,strchr(s,',')返回字符串s中从左往右第一个字符','的指针。 #include #include #include #include #in原创 2013-04-21 22:16:28 · 732 阅读 · 0 评论 -
Poj 3013 Big Christmas Tree
题目链接:http://poj.org/problem?id=3013 本题是最短路问题。 但是较特殊的一点是边少点多。构建临界矩阵不合理,因为是稀疏图,且点较多,会爆栈。 所以,正确的做法使用邻接表,邻接表又分为基于点的邻接表和基于边的,对于本题而言,我们用基于边的链式前向星较好。 另外,对于最短路的处理,我们用SPFA较好。 所以,综合,本题练习基于前向星的SPFA。 其实,SPF原创 2013-04-04 19:25:32 · 931 阅读 · 0 评论 -
Hoj 1520 The Bottom of a Graph/Poj 2186 Popular Cows/Poj 1904 King's Quest
这几题练习强连通分量的Tarjan求法: 在一个有向图中,如果两个点a,b之间存在a->b的路径以及b->a的路径,则称a与b在同一强联通分量(SCC,strongly connected component)之中。因此可以将图划分为几个子图,每一个子图中都是一个极大强联通分量。如果将所有的强连通分量都缩成一个点,原图就变成了一个DAG(有向无环图)。 可以用Tarjan算法、Kosara原创 2013-08-20 08:50:52 · 855 阅读 · 0 评论 -
Poj 1144 Network
题目:http://poj.org/problem?id=1144 Tarjan无向图求割点。 #include #include #include #include #include #include using namespace std; #define Maxn 105 #define Maxm 10005 struct Edge { int a,b; }edge[原创 2013-08-21 17:14:29 · 741 阅读 · 0 评论 -
Hoj 1917 Peaceful Commission
题目链接:http://acm.hit.edu.cn/hoj/problem/view?id=1917 2-sat问题。 如果a和b矛盾,那么a向b的反面连一条线。 以此建立了一颗有向图,然后对此图求强连通分量后缩点,反向连线后形成一个DAG图。 然后对此图求拓扑排序即可。 #include #include #include #include #include #includ原创 2013-08-21 17:21:29 · 842 阅读 · 0 评论 -
Hoj 2632 Blanks in a Table
题目链接:http://acm.hit.edu.cn/hoj/problem/view?id=2632 题意: 设a代表非空,a'代表空。 b代表非空,b'代表空。 那么: 有n个条件要求a和b不可同时为空,则:a->b',b->a' 有p个条件要求a和b至少有一个为空,则:a'->b,b'->a #include #include #include #include #in原创 2013-08-21 20:22:14 · 821 阅读 · 0 评论 -
Hoj 1961 Arctic Network/Hoj 2507 The Bug Sensor Problem
两道求最小生成树第K大(小)边的题目。 一般这种题目都是一个原本的连通图分割成s个连通分量,求这些连通分量中最长边。那么这就是求原图中最小生成树 中第s大的边的长度。因为连接这s个连通分量的边肯定要求是前s-1长的边,这些边有s-1个。 第一题:Hoj 1961 Arctic Network 题目链接:http://acm.hit.edu.cn/hoj/problem/view?id=19原创 2013-08-22 09:46:55 · 2395 阅读 · 0 评论 -
Hoj 1086 Don't Get Rooked
题目:http://acm.hit.edu.cn/hoj/problem/view?id=1086 本题数据范围较小,可以暴力搜索过。 如果数据范围大一些的话,可以使用二分图。 先以行考虑,每行中,没有墙分割的点集合为一块。这样扫描后会形成rNum块。 再以列考虑,每列中,没有墙分割的点集合为一块。这样扫描后会形成cNum块。 然后如果行块与列块之间为二分图的左右部分,如果两者之间有个公原创 2013-08-20 21:19:48 · 813 阅读 · 0 评论 -
欧拉回路
1.无向图的欧拉回路判断: 如果一个无向图是连通的,并且每个点的度是偶数,那么这个无向图具有欧拉回路,所以 无向图的欧拉回路判断是非常简单的,只需要一次BFS就可以搞定了。 练习:Hdu 1878 欧拉回路 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1878 #include #include #include #include原创 2013-09-29 18:10:29 · 10717 阅读 · 0 评论 -
Vijos 1082 丛林探险
题目链接:https://vijos.org/p/1082 本题本来是练习SPFA的。我一看DIscuss能用裸搜。果断敲了一个前向星+DFS,居然超时了。后来发现是Next数组开小了,应该开成两倍边数的大小。 后来我又把前向星改成邻接表,也AC了。。最后写一发SPFA。 前向星+DFS+剪枝:(AC): #include #include #include #inclu原创 2013-04-05 11:00:09 · 1142 阅读 · 0 评论 -
Hut 1997 Seven tombs
题目连接:http://openoj.awaysoft.com/JudgeOnline/problem.php?id=1997 表达式树的应用。 本题可以使用中缀表达式转后缀表达式,然后枚举求解。也可以直接构建表达式树进行枚举求解。 关键是寻找最后计算的运算符,然后递归建立表达式树。 具体做法参考刘汝佳《算法竞赛入门经典》198页。 另外练习:next_permutation()原创 2013-04-02 19:43:33 · 882 阅读 · 0 评论 -
Hoj 1452 Tree Recovery
题目链接:http://acm.hit.edu.cn/hoj/problem/view?id=1452 题意:已知中序表达式和先序表达式求后序表达式。 我们知道先序、中序、后序、层序这四种遍历方式中,只要有中序和其他任意一种顺序,即可构建这个二叉树。并且求得其他的顺序。 方法一:一步到位 #include #include #include #include #include原创 2013-04-02 21:44:28 · 857 阅读 · 0 评论 -
Hoj 1833 Truck History
最小生成树 Prim。 题目:http://acm.hit.edu.cn/hoj/problem/view?id=1833 #include #include #include #include #include #include using namespace std; int map[2002][2002]; int dist[2002]; int visited[2002原创 2013-02-14 21:08:25 · 439 阅读 · 0 评论 -
Poj 2387 Til the Cows Come Home
求单源最短路,没有负边,用Dijkstra。 题目:http://poj.org/problem?id=2387 此题要注意最大INF的初始化问题,如果使用0x7f7f7f7f来初始化,很容易越界,造成WA。所以用0x3f3f3f3f比较妥当。 #include #include #include #include #include #include using namespa原创 2013-02-15 11:51:38 · 523 阅读 · 0 评论 -
Hoj 1632 Jungle Roads
最小生成树。 算法:Prim。 题目连接:http://acm.hit.edu.cn/hoj/problem/view?id=1632 #include #include #include #include #include #include using namespace std; int map[28][28]; int dist[28]; int visited原创 2013-02-11 21:43:20 · 529 阅读 · 0 评论 -
Hoj 1751 Tangled in Cables
最小生成树。Prim。 题目连接:http://acm.hit.edu.cn/hoj/problem/view?id=1751 练习一下Map使用。 #include #include #include #include #include #include #include using namespace std; double ma[1000][1000]; double原创 2013-02-11 23:11:56 · 475 阅读 · 0 评论 -
Poj 1125 Stockbroker Grapevine
写一发Floyed。处理多源最短路径问题。 题目连接:http://poj.org/problem?id=1125 Floyd-Warshall算法(Floyd-Warshall algorithm)是解决任意两点间的最短路径的一种算法,可以正确处理有向图或负权的最短路径问题。 Floyd-Warshall算法的时间复杂度为O(N3),空间复杂度为O(N2)。 Floyd-Wa原创 2013-02-15 16:57:13 · 840 阅读 · 0 评论 -
Hoj 1948 回家
题目:http://acm.hit.edu.cn/hoj/problem/view?id=1948 这题怎么说呢,题目出的挺好的,Dijkstra。既有边权又有点权。加一维处理点权。 但是仍有不少疑问,我提交了有20次了吧。都刷屏了。快。各种试。。有两个地方至今仍不理解。 1.关于mapp对角线初始化为0 的问题,难道不需要初始化为0么?初始化为0反而A不掉。 2.起点和终点不可以交换顺序原创 2013-02-16 17:59:23 · 589 阅读 · 2 评论 -
Hoj 2047 106 miles to Chicago
Dijkstra. 只不过是把原先的普遍的最短单源路径当作最大单源路径来求。且运算符是乘法而不是加法。用Double来存储,细节部分需要雕琢一下再提交。 题目:http://acm.hit.edu.cn/hoj/problem/view?id=2047 #include #include #include #include #include #include using n原创 2013-02-16 22:37:46 · 633 阅读 · 0 评论 -
Hoj 1436 MPI Maelstrom
题目:http://acm.hit.edu.cn/hoj/problem/view?id=1436 本题是单源最短路径的应用。由于比赛时时间紧迫,写Floyed较快。 #include #include #include using namespace std; int dist[102][102]; char temp[50]; int main() { #ifndef ONLIN原创 2013-03-05 18:47:48 · 701 阅读 · 0 评论 -
Hoj 1811 Freckles
最小生成树。Prim。 题目连接:http://acm.hit.edu.cn/hoj/problem/view?id=1811 对于Double min的初始化,0x7f起不到预期的效果.赋一个相对大的数即可-10000 #include #include #include #include #include #include using namespace std; d原创 2013-02-14 19:44:18 · 468 阅读 · 0 评论 -
NYOJ 35 表达式求值
题目:http://acm.nyist.net/JudgeOnline/problem.php?pid=35 本题是求算数表达式的值。操作数是大于等于的实数,操作符有 + ,- ,*,/,() 只要开两个栈,一个记录操作符,一个记录后缀表达式。 即:把原始的中缀表达式转换成后缀表达式(逆波兰式),然后进行计算。 前缀和后缀表示法有三项公共特征: 操作数的顺序与等价的中缀表达式中操作数的顺原创 2013-03-22 14:54:55 · 978 阅读 · 0 评论 -
LA 4255 Guess
题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2256 题意:给定一串数字a1,a2....an,给出sij的正负数值。sij代表ai+...aj的大小。求一组结果满足此条件。-10 思路: 设:Bi = a1+ a2 +原创 2013-10-12 17:31:05 · 3920 阅读 · 0 评论