最短路
--子非鱼--
一个人幸运的前提是有能力和有条件改变自己
展开
-
Dijkstra算法
用于计算从单个源点到图中任意点的最短路问题(适用于边权值为正的情况)。 #include #include #include #define INF 0xffffff int visit[INF],map[100][100],dis[100],fa[100]; void Dijkstra() { memset(visit,0,sizeof(visit)); for(int i原创 2013-04-04 08:54:41 · 682 阅读 · 0 评论 -
hdu 3790 最短路径问题
点击打开题目链接 该题更新路径时,及时更新费用,如果路径不需更新,还要考虑费用是否要更新。 #include #include #include #define INF 1005 #define MAX 0xfffff using namespace std; int map[INF][INF]; int cost[INF][INF]; int n,m; void Dijkstra(int s原创 2013-04-15 17:12:30 · 625 阅读 · 0 评论 -
nyoj 183 赚钱啦
点击打开题目链接 最短路问题,而且涉及到判断环路的问题。 判断负环的两种方法: SPFA思想:如果存在一个点进入队列的次数超过N次,则存在负环。 bellman_ford思想:对所有的边进行v-1 松弛即如果 dis[u]+map[u][v] 我用的是SPFA判断环,代码如下: #include #include #include #define CL原创 2013-04-28 11:19:36 · 720 阅读 · 0 评论 -
Dijkstra优化
稀疏图的邻接表:在这种表示方法中,每一个结点i都有一个链表,里面保存着从i出发的所有的边。这里用数组来实现链表。first[u]保存结点为u的第一条边的编号,next[e]表示编号为e的边的“下一条边”的编号。 #include #include #include #define INF 1000 int u[INF],v[INF],w[INF],first[INF],next[INF]; vo原创 2013-04-04 10:25:22 · 686 阅读 · 0 评论