![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
图论
文章平均质量分 69
triplebee
人狠话不多
展开
-
HDU1875
好久不A题,寒假找找状态先来一题。博客第一篇文章! 并查集+最小生成树,难度不大,结合了计算几何,没有秩的优化貌似也能过。 #include #include #include using namespace std; typedef struct point { int x; int y; }point; point p[10100]; int rank[10100]; typede原创 2014-01-21 22:45:27 · 1006 阅读 · 0 评论 -
POJ1258
用惯了克鲁斯卡尔,写个prim用了好久,不练不行啊 题目没什么好说的,就是最小生成树。#include #include #include using namespace std; int graph[105][105]; int dis[105]; int vis[105]; int main() { int n; int i,j,k; while(cin>>n) { for(i=原创 2014-01-25 15:23:06 · 3818 阅读 · 0 评论 -
HDU2066
神坑的题目 思路就是枚举起点,迪杰斯特拉求最短路径,再枚举终点(如果起点终点一起枚举可能会超时,也能勉强扯上动态规划的思想吧),求最短路径。 如果剪枝可以加一个变量存最大的点,这样就不用每一次都循环到数据边界1000。 由于对自己很有自信,这题没有用模板写(事实是算法部分也没错,题目重边太坑),代码功能没分函数,整体有点乱。我是括号小王子O(∩_∩)O。 #include #inclu原创 2014-01-26 18:33:29 · 824 阅读 · 0 评论 -
POJ1041
欧拉路问题 本次比赛的水题 对于这题的无向图,要每一个点的度数都为偶数,才存在欧拉回路。 #include #include #include using namespace std; int G[50][2000]; //G[点][边] = 点 bool vis[2000]; int degree[50]; int stack[2000], top; int max(int a, i原创 2014-03-30 18:31:11 · 4040 阅读 · 0 评论 -
POJ2253 && ZOJ1942
两种写法 用floyd算法,求所有点之间的最大跳的最小值,最后输出a[0][1],即起始与终止位置的最小值,采用传递闭包的思路,时间复杂度较高,但代码简单。 或者Dijkstru的变形,两点间的最短距离,只是最短距离的求法有变,当前加入一个点时,松弛方法不同,时间复杂度降低了。 在数据结构编程实验一书上,看到二分的写法,感觉很巧妙。也是把三种写法都看一下,前两种为找到的代码,最后一种是自己写原创 2014-03-30 19:20:39 · 815 阅读 · 0 评论 -
tarjan算法
说到以Tarjan命名的算法,我们经常提到的有3个,其中就包括本文所介绍的求强连通分量的Tarjan算法。而提出此算法的普林斯顿大学的Robert E Tarjan教授也是1986年的图灵奖获得者(具体原因请看本博“历届图灵奖得主”一文)。 首先明确几个概念。 强连通图。在一个强连通图中,任意两个点都通过一定路径互相连通。比如图一是一个强连通图,而图二不是。因为没有一条路转载 2014-03-25 17:39:51 · 1056 阅读 · 0 评论