上一页 1 2 3 4 5 6 7 ··· 17 下一页
摘要: #include <vector>using namespace std;typedef struct edge{ int v; int w;}edge;#define narray 1001const int maxData = 0x7fffffff; vector<edge> adj[narray]; //邻接表 int m,n; //m为边数,n为顶点数 int d[... 阅读全文
posted @ 2010-06-05 22:15 北海小龙 阅读(1350) 评论(0) 推荐(1) 编辑
摘要: //题目类型;最短路-—最短路和相差一个单位的次短路的条数和//本题关键在于理解Dijkstra的贪心思想解题思路:本题若开始直接在Dijkstra中加入针对加1的递推式, 必须在Dijkstra的过程中加入DFS, 很繁琐. 改换求次短路, 然后判断次短路是否比最短路长1. 解法一、A*求第K短路,把前面K条路都求出来,pku 2449 ,但是据说这个题的最后答案超过10^8,把路全... 阅读全文
posted @ 2010-06-05 21:51 北海小龙 阅读(1375) 评论(0) 推荐(0) 编辑
摘要: //题目类型;最短路-求最短路的条数//解题思路:类似于贪心的思路,基本方法为采用递推,用 p[] 记录路径条数,//(1)dist[u]+ w(u,v)== dist[v] ,则 p[v]+= p[u]//(2)dist[u]+ w(u,v)< dist[v] 则 p[v]= p[u]。//由于本题边数较多,所以采用邻接表的结构存储 #include <iostream>#in... 阅读全文
posted @ 2010-06-05 19:31 北海小龙 阅读(279) 评论(0) 推荐(0) 编辑
摘要: //题目类型:求K最短路//算法实现:Dijkstra+A*(启发式搜索)//首先求出其他点到des的最短距离,然后用基于BFS的优先队列A*算法求,f(i)=g(i)+h(i) 其中h(i)表示i到des的最短路,g(i)表示从src到i的//路径长度每次取出f(i)值最小的,当第k次取出t时即求出第k短路#include <iostream>#include <queue&g... 阅读全文
posted @ 2010-06-05 14:52 北海小龙 阅读(1106) 评论(0) 推荐(0) 编辑
摘要: typedef struct edge{ int a; int b; int value;}edge;edge edges[earraysize];int final[narraysize]; //存储父节点 int nodecount[narraysize]; //存储该节点孩子结点的个数 bool cmp(edge a,edge b){ return a.value<b.value;}i... 阅读全文
posted @ 2010-06-05 08:46 北海小龙 阅读(328) 评论(0) 推荐(0) 编辑
摘要: int graph[arraysize][arraysize];bool final[arraysize];int d[arraysize]; int maxData =0x7fffffff;int N; //结点个数 int prim(int src){ int sum = 0; int minData; int i,j; int v; memset(final,0,sizeof(final))... 阅读全文
posted @ 2010-06-04 21:37 北海小龙 阅读(349) 评论(0) 推荐(0) 编辑
摘要: #include <iostream>#include <algorithm>#include <queue>#include <climits> //引入<climits>的类,注意如果引入<limits>会出现编译错误 #include <cstdio>//#include <conio.h>usi... 阅读全文
posted @ 2010-06-04 18:47 北海小龙 阅读(804) 评论(0) 推荐(0) 编辑
摘要: //算法实现:Dijkstra+邻接表+优先级队列//解题思路:由于是构造一棵树,则最终所求答案ans = ∑dist[i] * weight[i].(1 <= i <= vn),其中dist[i]为结点i到根结点root(1)的距离,vn为结点数,//而且weight[i]是固定的,ans仅仅与dist[i]有关。这样就转换成了求各点到根结点的最短路径。#include &l... 阅读全文
posted @ 2010-06-04 18:38 北海小龙 阅读(675) 评论(0) 推荐(0) 编辑
摘要: int maxData=10000000;int graph[arraysize][arraysize];int d[arraysize];int pre[arraysize]; //存储节点前驱 bool final[arraysize];int t,n;void Dij(int src){ int i,j; int minData; int v; memset(final,0,sizeof(f... 阅读全文
posted @ 2010-06-03 20:56 北海小龙 阅读(266) 评论(0) 推荐(0) 编辑
摘要: //题目类型:二分匹配-最小权完美匹配//算法实现:可以采用KM算法或者最小费用最大流实现//KM算法实现 #include <iostream>#include <string>#include <math.h>//#include <conio.h>using namespace std;#define arraysize 105int maxD... 阅读全文
posted @ 2010-06-03 15:36 北海小龙 阅读(326) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 17 下一页