摘要: 把与某个楼成相连的上下楼层为边建立一个图,边的权值为1.如:3 3 1 2 5可建成图:map[1][4] = 1;map[2][5] = 1;map[3][2] = 1;map[3][4] = 1;map[4][2] = 1;然后用最短路经的解法Floyd, Bellman_Ford, SPFA, Dijkstra...这里用的是Dijkstra解法My Code:#include <iostream>#include <cstring>#include <cstdio>using namespace std;const int inf = 1000000 阅读全文
posted @ 2011-08-16 21:00 AC_Von 阅读(362) 评论(0) 推荐(0) 编辑
摘要: 很裸的最短路径问题,这里用Dijkstra做的,前边已经写过Floyd和SPFA算法SPFA:http://www.cnblogs.com/vongang/archive/2011/08/16/2141334.htmlFloyd:http://www.cnblogs.com/vongang/archive/2011/08/16/2141019.htmlMy Code:#include <iostream>#include <cstring>#include <cstdio>using namespace std;const int maxnum = 107; 阅读全文
posted @ 2011-08-16 19:35 AC_Von 阅读(295) 评论(0) 推荐(0) 编辑
摘要: 查SPFA的资料时偶尔看到一种运用,然后很淡定的敲之1A了15MS+328k code:#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int N = 207;const int inf = 100000000;int vis[N], map[N][N];int dis[N], q[N];void spfa(int n, int s){ int i, f, r, p; memset(vis, 0, sizeof(vis)); for(i = 0; 阅读全文
posted @ 2011-08-16 17:34 AC_Von 阅读(722) 评论(0) 推荐(0) 编辑
摘要: 求图中任意两点间的最短路径,个人感觉用Floyd比较好,有人说这道题可以用SPFA,目前还没有这方面的思路,先把Floyd的做法贴上,以后再补Floyd code:#include <iostream>#include <cstdio>using namespace std;const int inf = 100000000;const int N = 208;int dis[N][N];int n;void Floyd(){ int i, j, k; for(k = 0; k < n; k++) for(i = 0; i < n; i++) ... 阅读全文
posted @ 2011-08-16 17:03 AC_Von 阅读(313) 评论(0) 推荐(0) 编辑