上一页 1 ··· 23 24 25 26 27 28 29 30 31 ··· 61 下一页
摘要: 题目链接:http://poj.org/bbs?problem_id=3255思路:分别以源点1和终点N为源点,两次SPFA求得dist1[i](1到各点的最短距离)以及dist2[i](各点到N的最短距离),然后就是枚举边了,设某一条边的两端为u,v,权值为w,则dist1[u]+w+dist2[v]即为1->N的一条路径,在所有的路径中找出次短的即可。http://paste.ubuntu.com/5920862/ 阅读全文
posted @ 2013-07-28 15:17 ihge2k 阅读(541) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=3072一涉及稍微计算几何方面的东西就要做好久,一开始先用SPFA写的,可能是由于松弛次数过多导致精度损失,郁闷了好久,然后改成Dijkstra就没什么问题了。http://paste.ubuntu.com/5920764/ 阅读全文
posted @ 2013-07-28 14:08 ihge2k 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=2449思路:我们可以定义g[x]为源点到当前点的距离,h[x]为当前点到目标节点的最短距离,显然有h[x]<=h*[x](h*[x]定义为当前点到目标节点的实际距离),至于怎么求的h[x],即图中任何节点到目标节点的最短距离,这里我们可以建反图,以目标节点为源点一次spfa就可以求得各点到目标节点的最短距离了。然后就是A*求第k短路了,f[x]=g[x]+h[x],每次将最小的f[x]出队列,直到目标节点被扩展了k次,则求得了第k短路,这里还有一个优化,即如果某一个节点扩展次数大于k次,就没必要在继续扩展了。http://p 阅读全文
posted @ 2013-07-27 17:29 ihge2k 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4618昨天多校的一道题,说多了都是泪啊,为了一道图论题,磨了那么久,结果是别的题都没看,没办法,补呗。思路:题目数据不大,直接按矩阵大小枚举,如果存在n阶矩阵为回文矩阵,则直接break枚举n+1阶矩阵。http://paste.ubuntu.com/5913255/ 阅读全文
posted @ 2013-07-26 10:11 ihge2k 阅读(507) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=1797思路:题目意思很简单,n个顶点,m条路,每条路上都有最大载重限制,问1->n最大载重量。其实就是一最短路的变形,定义weight[i]表示源点到顶点i的最大载重量,初始化为0,之后不断去更新就行了。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define MAXN 1010 9 #define inf 1 >map;20 21 int SPFA()22 {23 memset 阅读全文
posted @ 2013-07-25 10:35 ihge2k 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=1724思路:有限制的最短路,或者说是二维状态吧,在求最短路的时候记录一下花费即可。一开始用SPFA写的,900MS险过啊,然后改成Dijkstra+priority_queue,60MS,orz.SPFA: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define MAXN 104 9 #define inf 1Pair;11 12 struct Edge{13 int v,w,c;1... 阅读全文
posted @ 2013-07-24 21:07 ihge2k 阅读(303) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=1511思路:题目意思很简单就是要求源点到各点的最短路之和,然后再求各点到源点的最短路之和,其实就是建两个图就ok了,其中一个建反图。1000000个点和1000000条边,一开始用SPFA+vector怎么都是TLE,然后换成邻接表就过了=.=。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define MAXN 1000100 9 #define inf 1LLQ;35 Q.push... 阅读全文
posted @ 2013-07-24 19:42 ihge2k 阅读(1151) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=1062思路:要求对于最短路上的点,不能出现等级之差大于m,于是我们可以枚举,假设酋长的等级为level,于是这个区间范围[level-m,level],[level-m+i,level+i],......,[level,level+m]都是可行的,对于枚举的每个区间范围,做一次SPFA即可,最终结果取最小值即可。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define MAXN 111 8 #define inf 阅读全文
posted @ 2013-07-23 20:52 ihge2k 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=3159思路:题目意思很简单,都与给定的条件dist[b]-dist[a]b直接连边,边权值为c,从而题目转化为图上求1->n的最短路,看了一下数据,30000个点,150000条边,果断用Dijkstra+priority_queue,1300MS+险过,orz. 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 #define MAXN 30030 9 #define inf 1Pair;11 阅读全文
posted @ 2013-07-23 11:19 ihge2k 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=3114思路:题目要求很简单,就是求两点之间的花费的最短时间,不过有一个要求:如果这两个city属于同一个国家,则花费时间为0。如何判断一个是属于同一个国家呢?就要缩点了,这样属于同一个强连通分量的点就是属于同一个国家了。然后就是SPFA求最短路。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 #define MAXN 55510 #define inf 1 >map;2 阅读全文
posted @ 2013-07-22 19:55 ihge2k 阅读(277) 评论(0) 推荐(0) 编辑
上一页 1 ··· 23 24 25 26 27 28 29 30 31 ··· 61 下一页