随笔分类 -  最短路

1 2 下一页

Saving Princess claire 最短路
摘要:比赛中非常水的一道题,结束时大家才做。。没提交上。。泪奔。。View Code #include<stdio.h>#include<string.h>#include<stdlib.h>#include<iostream>#include<algorithm>#include<map>#include<math.h>#include<queue>using namespace std;int N,M,C,n, maxn;int xx[]={1,0,0,-1};int yy[]={0,1,-1,0}; 阅读全文

posted @ 2012-07-20 22:25 more think, more gains 阅读(171) 评论(0) 推荐(0)

Problem K. 找宝箱
摘要:Problem K. 找宝箱Time Limit: 2000ms Memory Limit: 65536kbDescription作为一个强迫症患者,小 Y 在走游戏里的迷宫时一定要把所有的宝箱收集齐才肯罢休。现在给你一个 N  M 的迷宫,里面有障碍、空地和宝箱,小 Y 在某个起始点,每一步小 Y 可以往上下左右走,当然前提时没有走出迷宫并且走到的点不是障碍。如果小 Y 走到了某个为宝箱的点,那么这个宝箱就被他收集到了,然后此处变为空地。现在你需要计算小 Y 最少需要走多少步才能收集齐所有的宝箱。Input输入包含多组数据。对于每组数据,第一行两个正整数 N;M (1  N;M  10 阅读全文

posted @ 2012-07-16 08:56 more think, more gains 阅读(343) 评论(0) 推荐(0)

Bellman-ford
摘要:Bellman-ford 算法View Code #include <stdio.h>#include <string.h>#include <stdlib.h>#include <algorithm>using namespace std;int mp[210][210];int dis[210];int N, M;const int inf = 0x7f7f7f7f;void bellman_ford( ){ //初始话 for( int i = 1; i <= N; i++) { dis[i] = inf; } dis[1] = .. 阅读全文

posted @ 2012-07-12 21:58 more think, more gains 阅读(155) 评论(0) 推荐(0)

POJ 2240 最长路 枚举
摘要:题意:问给你一些货币兑换利率,利用这些汇率能否实现其原有货币增直。算法:1.肯定是个回路,不是回路输出No,而且这个回路是最长的,可以用SPFA求最长路,并判断是否构成回路。2.问题是不知到哪个是源点,也就是所有点得都有可能是源点,枚举所有点为源点,求N次SPFA(N<=30),构造一个货币初始直,如1.View Code #include<stdio.h>#include<string.h>#include<stdlib.h>#include<map>#include<iostream>#include<string&g 阅读全文

posted @ 2012-07-12 09:03 more think, more gains 阅读(170) 评论(0) 推荐(0)

poj 1125 FLoyd
摘要:题意:让你找一个点,从这个点向其它点传递信息所要的时间最短。输出这个点得编号,和最晚收到信息的人所需时间。算法:1.Dijkstra算法一次只能求单源最短路径,而FLoyd算法则可以求出每对顶点得最短路径,求一次则可。2.枚举每个点到各点的最大直,比较各点的最大直就可以得出答案。这个最大最大直就是最晚收到信息所需时间。View Code #include<stdlib.h>#include<string.h>#include<stdio.h>int mp[210][210];int N;const int inf = 0x7f7f7f7f;void Floy 阅读全文

posted @ 2012-07-12 08:08 more think, more gains 阅读(178) 评论(0) 推荐(0)

POJ 2253 Frogger 二分 + 最短路
摘要:题意是Freddy Frog 要到 Fiona Frog 的石头上去,现在有些石头可以利用 ,Freddy Frog可以跳跃到这些石头上去,求其跳跃得最小距离。算法:1.求最短路再取其最长得一条边这样的算法时错得,求出来来得不是其跳跃最小距离。2. 正确的做法应该是枚举每一条边, 可以二分枚举,边得长度,即跳跃的距离是线性递增得。。。再带限制条件即每条边的大小要小于等于当前枚举得这条边,求其最短路View Code #include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h& 阅读全文

posted @ 2012-07-11 21:28 more think, more gains 阅读(202) 评论(0) 推荐(0)

POJ 1062 有限制条件的最短路
摘要:见到得POJ第一道中文题。刚开始算法想错了,交上去果断WA刚开始错误得算法:1. 根据题意建好图2.floyd求传递闭包。3.以1为起点,求一次Dijsktra算法,并记录其路径4.枚举1可以到的点,求出其最小直,并判断该路径上得点是否满足等级限制交上去错了后,才发现算法错了。。1 410000 3 22 13 31000 2 24 13 11000 3 14 2100 4 0这组数据就能完全否认我的算法。并且改不过来。果断换算法。看了discuss,有人说,枚举等级限制,求多次Dijkstra,很暴力,但毫无疑问时正确的算法。正确算法如下:1.建好图2.枚举等级,如果酋长等级是4,限制为2, 阅读全文

posted @ 2012-07-11 19:05 more think, more gains 阅读(270) 评论(0) 推荐(0)

POJ 3259 SPFA
摘要:这题让我英语太受打击了,题意难懂,读懂题意纸老虎。算法:1.题意本质就是判断是否存在负权回路。2.SPFA,一个点入队大于等于N次,就说明它存在负权回路。View Code #include <stdio.h>#include <string.h>#include <stdlib.h>#include <queue>#include <iostream>using namespace std;#define MAXN 100100struct Edge{ int u, next, val; Edge() {} Edge( int v 阅读全文

posted @ 2012-07-10 18:32 more think, more gains 阅读(279) 评论(0) 推荐(0)

poj 1860 Currency Exchange SPFA
摘要:算法:1.SPFA求最长路,dis【】初始直为0,大于改成小于号2.松弛结束后,判断是否大于dis[S] > V, 大于就输出YES, 否则输出NOView Code #include <stdio.h>#include <string.h>#include <stdlib.h>#include <queue>#include <math.h>#include <algorithm>#define MAXN 100100using namespace std;struct Edge{ int u, next; dou 阅读全文

posted @ 2012-07-10 16:00 more think, more gains 阅读(206) 评论(0) 推荐(0)

Floyd算法
摘要:Floyd算法特点:1.时间复杂度高2.编写简单3.可以处理负权边4.可以用来计算传递闭包View Code #include <stdio.h>#include <string.h>#include <stdlib.h> int N, M, mp[110][110];const int oo = 0x7f7f7f7f;int min( int x, int y){ return x < y ? x : y; }void init( ){ for( int i = 0; i <= 100; i++) for(int j = 0; j <= 阅读全文

posted @ 2012-07-10 09:45 more think, more gains 阅读(230) 评论(0) 推荐(0)

SPFA
摘要:SPFA与dijkstra算法的区别1. dijkstra算法是含贪心思想,SPFA更像BFS2.BFS每个点只入对一次,而SPFA一个点在出了队列之后,可能会重新入队,在本身改进后,用来改进其他点。3.SPFA可以处理负权边,每个点入队次数超过N,则存在负权环代码:View Code //邻接表存储图的最短路 #include <stdio.h>#include <string.h>#include <stdlib.h>#include <iostream>#include <queue>using namespace std;#d 阅读全文

posted @ 2012-07-10 09:31 more think, more gains 阅读(205) 评论(0) 推荐(0)

最短路
摘要:复习下图论算法1. 邻接表的DijkstraView Code //邻接表存储图的最短路 #include <stdio.h>#include <string.h>#include <stdlib.h>#include <iostream>using namespace std;#define MAXN 100100struct Edge{ int u, next, val; Edge() {} Edge( int v , int Next ,int Val): u(v),next(Next), val(Val) { } }edge[MAXN]; 阅读全文

posted @ 2012-07-10 09:08 more think, more gains 阅读(195) 评论(0) 推荐(0)

最短路复习
摘要:HDU 1874 1.dijkstra 算法View Code #include<stdio.h>#include<string.h>#include<stdlib.h>#include<algorithm>using namespace std;const int inf = 0x7f7f7f7f;int mp[400][400];int visit[400];int dis[400];int S, T;void dij( int N ){ for( int i = 0; i < N; i++) { visit[i] = 0; dis[i 阅读全文

posted @ 2012-03-13 14:11 more think, more gains 阅读(151) 评论(0) 推荐(0)

Bus System 我对自己无语了。。wa了n次原来输出格式搞错了。唉。
摘要:#include<stdio.h>#include<stdlib.h>#include<string.h>#define inf 0x7f7f7f7f7f7f7f7fLL__int64 map[110][110],cost[10],dis[10],sta[110];int a,b,M,N,l=0;__int64 exp(__int64 x){ if(x==0) return 0; if(x>0&&... 阅读全文

posted @ 2011-05-01 20:18 more think, more gains 阅读(200) 评论(0) 推荐(0)

Minimum Transport Cost
摘要:这道题我从下午两点开始做,一开始时dijkstra算法做的,做到后面才悲剧地发现,我根本无法正确记录路径,悲剧啊。。。想了一阵子还是没有想出方法,想到想到竟然睡着了。。 最后想起了, floyd 算法。。不得不删了重新再写一次。。。。用floyd算法写的时侯,参考了下小白的,最后测试数据全通过了。。没想到提交wa..最后检查了好久还发现输出total cost时侯,我用的是map[a][b],,而... 阅读全文

posted @ 2011-05-01 17:46 more think, more gains 阅读(336) 评论(0) 推荐(0)

最短路径问题
摘要:#include<stdio.h>#include<stdlib.h>#include<string.h>int N,M;int map[1100][1100],dis[1100],visit[1100],exp[1100][1100],price[1100];const int inf=0x7fffffff;int dij(int x,int y){ int i,j,k,t,p; for(i=1... 阅读全文

posted @ 2011-04-30 22:07 more think, more gains 阅读(153) 评论(0) 推荐(0)

最短路
摘要:#include<stdio.h>#include<stdlib.h>int N,M;int map[110][110],dis[110],visit[110];const int inf=0x7fffffff;int dij(int x){ int i,j,k,t,p; for(i=0;i<=N;i++) { dis[i]=map[i][1]; visit[i]=0; } dis[0]=0; v... 阅读全文

posted @ 2011-04-30 21:48 more think, more gains 阅读(153) 评论(0) 推荐(0)

算法小结
摘要:最短路算法: 1.dijkstra算法 2.bellman-ford算法 3.floyd 算法 最小生成树算法: 1.prim 2.kruskal 今天搞到头晕啦。 阅读全文

posted @ 2011-04-30 19:03 more think, more gains 阅读(215) 评论(0) 推荐(0)

畅通工程续
摘要:#include<stdio.h>#include<string.h>#include<stdlib.h>const int inf=0x7fffffff;int map[210][210],N,M,dis[210],visit[210];int dij(int x,int y ){ int i,j,t,k; for(i=0;i<N;i++) { dis[i]=map[x][i]; visit[i]=0; }for(i=0;i<N;i++) { t=inf; for(j=0;j<N;j++) { if(!visit[j]&& 阅读全文

posted @ 2011-04-30 13:01 more think, more gains 阅读(123) 评论(0) 推荐(0)

最短路
摘要:#include<stdio.h>#include<string.h>#include<stdlib.h>const int inf=0x7fffffff;int map[100][100],visit[100],dis[100];int dij(int N){ int i; /* for(i=1;i<=N;i++) { dis[i]=map[i][N]; visit[i]=0; } */ for ( i = 1; i <= N; ++ i ) { dis[i] = inf; visit[i] = 0; } dis[1]=0; for(i=1;i 阅读全文

posted @ 2011-04-15 01:07 more think, more gains 阅读(200) 评论(0) 推荐(0)

1 2 下一页

导航