2012年7月10日

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 阅读(269) 评论(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 阅读(175) 评论(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 阅读(205) 评论(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 阅读(192) 评论(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 阅读(173) 评论(0) 推荐(0) 编辑

导航