zoj 1508 Intervals

#include #include #include #include using namespace std; const int INF = 10000000; const int MAXN = 50010; struct ArcNode { int to; int weight; ArcNode* pNext; ArcNode() { to = 0; wei...
阅读(377) 评论(0)

zoj 2770 Burn the Linked Camp

Bellman_Ford实现:点击打开http://blog.csdn.net/hearthougan/article/details/17631941 差分约束系统的SPFA实现:SPFA速度比Bellman_Ford快多了。链表实现,表头不存数据。 #include #include #include #include using namespace std; const in...
阅读(598) 评论(0)

zoj 2770

#include #include #include using namespace std; const int MAXN = 1010; const int MAXM = 23000; const int INF = 100000000; struct Edge { int u, v, w; }edges[MAXM]; int n; int EN; int dist[MA...
阅读(617) 评论(0)

poj 1201

#include #include #include using namespace std; const int MAXN = 50010; const int INF = 100000000; struct Edge { int u, v, w; }edges[MAXN]; int dist[MAXN]; int n, l, r; void Inite() { ...
阅读(472) 评论(0)

Floyd Test

算法思想:       Floyd(弗洛伊德)算法的基本思想是:对一个顶点个数为n的有向网(或无向网),设置一个n×n的方阵A(k) ,其中除对角线的矩阵元素都等于0外,其他元素A(k)  [i][j] (i≠j)表示从顶点vi到顶点vj的有向路径长度,k表示运算步骤,k = -1, 0, 1, 2, …, n-1。 初始时:A (-1)= Edge(图的邻接矩阵),即初始时,以...
阅读(440) 评论(0)

poj 3259 Wormholes

http://poj.org/problem?id=3259 判断是否存在负权回路,如果存在,则表明某个顶点i入队列的次数超过了n次,n是顶点的数目。 #include #include #include #include #include using namespace std; const int MAXN = 550; const int INF = 10000000; ...
阅读(429) 评论(0)

poj 3268

点击打开题目 #include #include #include #include using namespace std; const int INF = 10000000; const int MAXN = 1010; struct ArcNode//邻接表结构 { int to; int weight; ArcNode* pNext; Ar...
阅读(481) 评论(0)

SPFA

算法思想:    Bellman-Ford算法的时间复杂度比较高,为O(n3)或O(nm),原因在于Bellman-Ford算法要递推n次,每次递推,扫描所有的边,在递推n次的过程中很多判断是多余的。SPFA算法(Shortest Path Faster Algorithm)是Bellman-Ford算法的一种队列实现,减少了不必要的冗余判断。    SPFA算法的大致流程是用一个队列来进...
阅读(461) 评论(0)

poj 1556 The Doors

#include #include #include #include #include using namespace std; const int INF = 100000000; const int MAXN = 100; struct Point { double x; double y; }; struct Edge { int u; i...
阅读(521) 评论(0)

poj 2240 zoj1092 Arbitrage

#include #include #include using namespace std; const int MAXN = 35; const int MAXM = 1000; struct exchange { int ci, cj; double cij; }Ex[MAXM]; char name[MAXN][20], a[20], b[20]; doubl...
阅读(413) 评论(0)

poj 1122 FDNY to the Rescue!

关键是建图,zoj也有一题,不过格式要求不一样,数据好像也不一样,卡那儿了! 下面是能过poj的代码: #include #include #include #include using namespace std; const int MAXN = 25; const int INF = 10000010; struct Dist { bool station; int n...
阅读(430) 评论(0)

zoj 2750 Idiomatic Phrases Game

题目大意:     成语接龙游戏,给定一些成语,该组成语中第1个和最后一个必须是给定的两个成语。在这组成语中,前一个成语的最后一个汉字必须和后一个成语的第一个汉字相同。在游戏过程中,Tom有一本字典,他必须从字典中选用成语。字典中每个成语都有一个权值T,表示选用这个成语后,Tom需要花时间T才能找到下一个合适的成语。你的任务是编写程序,给定字典,计算Tom至少需要花多长时间才能找到一个满足条件的...
阅读(492) 评论(0)

ZOJ1298, POJ1135 Domino Effect

题目大意:         你的任务是编写程序,给定多米诺骨牌游戏,计算最后倒下的是哪一张骨牌、在什么时间倒下。这些多米诺骨牌游戏包含一些“关键牌”,他们之间由一行普通骨牌连接。当一张关键牌倒下时,连接这张关键牌的所有行都开始倒下。当倒下的行到达其他还没倒下的关键骨牌时,则这些关键骨牌也开始倒下,同样也使得连接到它的所有行开始倒下。每一行骨牌可以从两个端点中的任何一张关键牌开始倒下,甚至两个端点...
阅读(439) 评论(0)

Dijkstra 算法介绍以及实现

Dijkstra算法的具体实现方法为: 1. 设置两个顶点的集合T和S: a) S中存放已找到最短路径的顶点,初始时,集合S中只有一个顶点,即源点v0; b) T中存放当前还未找到最短路径的顶点; 2. 在T集合中选取当前长度最短的一条最短路径(v0,…,vk),从而将vk加入到顶点集合S中,并修改源点v0到T中各顶点的最短路径长度;重复这一步骤,直到所有的顶点都加入到集...
阅读(690) 评论(0)

ZOJ 2797 POJ 2472 106 miles to Chicago

Floyd递推方程 dist[i][j] = max(dis[i][j], dist[i][k]*dist[k][j]); #include #include #include using namespace std; #define MAX(a, b) (a > b ? a : b) const int MAXN = 1010; double dist[MAXN][MAXN];...
阅读(586) 评论(0)
22条 共2页1 2 下一页 尾页
    个人资料
    • 访问:254804次
    • 积分:7043
    • 等级:
    • 排名:第3348名
    • 原创:471篇
    • 转载:19篇
    • 译文:0篇
    • 评论:16条