当前位置: 首页 > news >正文

货运公司网站源码定制电商平台

货运公司网站源码,定制电商平台,wordpress 编辑器文字大小,网站设计团队发展题目 现有村落间道路的统计数据表中#xff0c;列出了有可能建设成标准公路的若干条道路的成本#xff0c;求使每个村落都有公路连通所需要的最低成本。 输入格式: 输入数据包括城镇数目正整数N#xff08;≤1000#xff09;和候选道路数目M#xff08;≤3N#xff09;…题目 现有村落间道路的统计数据表中列出了有可能建设成标准公路的若干条道路的成本求使每个村落都有公路连通所需要的最低成本。 输入格式: 输入数据包括城镇数目正整数N≤1000和候选道路数目M≤3N随后的M行对应M条道路每行给出3个正整数分别是该条道路直接连通的两个城镇的编号以及该道路改建的预算成本。为简单起见城镇从1到N编号。 输出格式: 输出村村通需要的最低成本。如果输入数据不足以保证畅通则输出−1表示需要建设更多公路。 输入样例: 6 15 1 2 5 1 3 3 1 4 7 1 5 4 1 6 2 2 3 4 2 4 6 2 5 2 2 6 6 3 4 6 3 5 1 3 6 1 4 5 10 4 6 8 5 6 3 输出样例: 12 分析 一个典型的最小生成树问题可以用Prim或Kruskal实现本文使用Prim用循环和最小堆2种方式实现。 循环代码 #include stdio.h #include stdlib.h#define MAX_VERTEX_NUM 1000 #define INFINITY 65535 #define ERROR -1typedef int Vertex; typedef int WeightType;struct _Edge {Vertex V, W;WeightType weight; }; typedef struct _Edge *Edge;typedef struct _AdjNode *AdjNode; struct _AdjNode {Vertex adjV;WeightType weight;AdjNode next; };typedef struct AdjTable {AdjNode firstEdge; } AdjTable[MAX_VERTEX_NUM];struct _LGraph {int Nv, Ne;AdjTable graph; }; typedef struct _LGraph *LGraph;LGraph CreateGraph(int vertexNum); void InsertEdge(LGraph graph, Edge E); LGraph BuildGraph(int vertexNum, int edgeNum); Vertex FindMinDist(LGraph G, WeightType dist[]); int Prim(LGraph graph, Vertex S);/* 08-图7 公路村村通 难度1星6 15 1 2 5 1 3 3 1 4 7 1 5 4 1 6 2 2 3 4 2 4 6 2 5 2 2 6 6 3 4 6 3 5 1 3 6 1 4 5 10 4 6 8 5 6 3126 4 1 2 5 1 3 3 1 4 7 5 6 26 6 1 2 10 2 4 20 3 4 30 1 3 40 1 4 50 2 3 604 4 1 2 10 2 3 20 3 4 30 1 4 404 6 1 2 10 1 3 40 1 4 50 2 3 60 2 4 20 3 4 30 602 1 1 2 107 21 1 2 14 1 3 11 1 4 19 1 5 12 1 6 17 1 7 20 2 3 16 2 4 15 2 5 13 2 6 10 2 7 18 3 4 20 3 5 12 3 6 11 3 7 16 4 5 14 4 6 17 4 7 19 5 6 10 5 7 15 6 7 137 21 1 2 14 1 3 11 1 4 19 1 5 12 1 6 17 1 7 20 2 3 16 2 4 15 2 5 13 2 6 10 2 7 18 3 4 20 3 5 12 3 6 11 3 7 16 4 5 14 4 6 17 4 7 19 5 6 10 5 7 15 6 7 13*/int main() {int N, M;scanf(%d %d, N, M);LGraph G BuildGraph(N, M);printf(%d\n, Prim(G, 0));free(G);return 0; }LGraph CreateGraph(int vertexNum) {LGraph G;G (LGraph)malloc(sizeof(struct _LGraph));G-Nv vertexNum;G-Ne 0;for (int V 0; V G-Nv; V){G-graph[V].firstEdge NULL;}return G; }void InsertEdge(LGraph G, Edge E) {AdjNode NewNode;NewNode (AdjNode)malloc(sizeof(struct _AdjNode));NewNode-adjV E-W;NewNode-weight E-weight;NewNode-next G-graph[E-V].firstEdge;G-graph[E-V].firstEdge NewNode;NewNode (AdjNode)malloc(sizeof(struct _AdjNode));NewNode-adjV E-V;NewNode-weight E-weight;NewNode-next G-graph[E-W].firstEdge;G-graph[E-W].firstEdge NewNode; }LGraph BuildGraph(int vertexNum, int edgeNum) {LGraph G CreateGraph(vertexNum);G-Ne edgeNum;Edge E;E (Edge)malloc(sizeof(struct _Edge));for (int i 0; i G-Ne; i){scanf(%d %d %d, E-V, E-W, E-weight);E-V--;E-W--;InsertEdge(G, E);}free(E);return G; }Vertex FindMinDist(LGraph G, WeightType dist[]) { /* 返回未被收录顶点中dist最小者 */Vertex minV, V;WeightType minDist INFINITY;for (V 0; V G-Nv; V){if (dist[V] ! 0 dist[V] minDist){/* 若V未被收录且dist[V]更小 */minDist dist[V]; /* 更新最小距离 */minV V; /* 更新对应顶点 */}}if (minDist INFINITY) /* 若找到最小dist */return minV; /* 返回对应的顶点下标 */elsereturn ERROR; /* 若这样的顶点不存在返回-1作为标记 */ }int Prim(LGraph G, Vertex S) { // 只计算TotalWeight无需实际创建生成树WeightType dist[G-Nv], totalWeight;Vertex V;AdjNode W;int vCount;for (V 0; V G-Nv; V)dist[V] INFINITY;for (W G-graph[S].firstEdge; W; W W-next)dist[W-adjV] W-weight;totalWeight 0;vCount 0;dist[S] 0;vCount;while (1){V FindMinDist(G, dist);if (V ERROR)break;totalWeight dist[V];dist[V] 0;vCount;for (W G-graph[V].firstEdge; W; W W-next){if (dist[W-adjV] ! 0){if (W-weight dist[W-adjV]){dist[W-adjV] W-weight;}}}}if (vCount G-Nv) /* MST中收的顶点少于|V|-1个 */totalWeight ERROR;return totalWeight; }最小堆代码 #include stdio.h #include stdlib.h #include stdbool.h#define MIN_DATA -1000 #define ELEMENT_TYPE int #define MAX_VERTEX_NUM 1000 #define INFINITY 65535 #define ERROR -1typedef int Vertex; typedef int WeightType;struct _MinHeap {ELEMENT_TYPE *Elements;int Size;int Capacity; }; typedef struct _MinHeap *MinHeap;struct _Edge {Vertex V, W;WeightType weight; }; typedef struct _Edge *Edge;typedef struct _AdjNode *AdjNode; struct _AdjNode {Vertex adjV;WeightType weight;AdjNode next; };typedef struct AdjTable {AdjNode firstEdge; } AdjTable[MAX_VERTEX_NUM];struct _LGraph {int Nv, Ne;AdjTable graph; }; typedef struct _LGraph *LGraph;MinHeap CreateHeap(int MaxSize); bool isEmpty(MinHeap H); bool isFull(MinHeap H); ELEMENT_TYPE DelMin(MinHeap H, int dist[]); void BuildMinHeap(MinHeap H, int dist[]); void PercUp(MinHeap H, int p, int dist[]);LGraph CreateGraph(int vertexNum); void InsertEdge(LGraph graph, Edge E); LGraph BuildGraph(int vertexNum, int edgeNum);void UpdateHeap(MinHeap H, int dist[], Vertex V); Vertex FindMinDist(MinHeap H, int dist[]); int Prim(LGraph graph, Vertex S);/* 08-图7 公路村村通 难度2星6 15 1 2 5 1 3 3 1 4 7 1 5 4 1 6 2 2 3 4 2 4 6 2 5 2 2 6 6 3 4 6 3 5 1 3 6 1 4 5 10 4 6 8 5 6 3126 4 1 2 5 1 3 3 1 4 7 5 6 24 4 1 2 10 2 3 20 3 4 30 1 4 404 6 1 2 10 1 3 40 1 4 50 2 3 60 2 4 20 3 4 30607 21 1 2 14 1 3 11 1 4 19 1 5 12 1 6 17 1 7 20 2 3 16 2 4 15 2 5 13 2 6 10 2 7 18 3 4 20 3 5 12 3 6 11 3 7 16 4 5 14 4 6 17 4 7 19 5 6 10 5 7 15 6 7 13*/int main() {int N, M;scanf(%d %d, N, M);LGraph G BuildGraph(N, M);printf(%d\n, Prim(G, 0));free(G);return 0; }LGraph CreateGraph(int vertexNum) {LGraph G;G (LGraph)malloc(sizeof(struct _LGraph));G-Nv vertexNum;G-Ne 0;for (int V 0; V G-Nv; V){G-graph[V].firstEdge NULL;}return G; }void InsertEdge(LGraph G, Edge E) {AdjNode newNode;newNode (AdjNode)malloc(sizeof(struct _AdjNode));newNode-adjV E-W;newNode-weight E-weight;newNode-next G-graph[E-V].firstEdge;G-graph[E-V].firstEdge newNode;newNode (AdjNode)malloc(sizeof(struct _AdjNode));newNode-adjV E-V;newNode-weight E-weight;newNode-next G-graph[E-W].firstEdge;G-graph[E-W].firstEdge newNode; }LGraph BuildGraph(int vertexNum, int edgeNum) {LGraph G CreateGraph(vertexNum);G-Ne edgeNum;Edge E;E (Edge)malloc(sizeof(struct _Edge));for (int i 0; i G-Ne; i){ // 用E-V--E-W--解决顶点序号从1开始的问题scanf(%d %d %d, E-V, E-W, E-weight);E-V--;E-W--;InsertEdge(G, E);}free(E);return G; }Vertex FindMinDist(MinHeap H, int dist[]) {Vertex minV ERROR;// 从堆中取出最小值并维护最小堆的有效性。minV DelMin(H, dist);return minV; }int Prim(LGraph G, Vertex S) { // 只计算TotalWeight无需实际创建生成树WeightType dist[G-Nv], totalWeight;Vertex V;AdjNode W;int vCount;for (V 0; V G-Nv; V)dist[V] INFINITY;for (W G-graph[S].firstEdge; W; W W-next)dist[W-adjV] W-weight;totalWeight 0;vCount 0;dist[S] 0;vCount;// 根据dist对未收录顶点创建最小堆MinHeap H CreateHeap(G-Nv);for (V 0; V G-Nv; V){if (dist[V] ! 0){ // H-Elements保存的是未收集顶点的编号本例依次是1,2,3H-Elements[H-Size] V;}}BuildMinHeap(H, dist);while (1){V FindMinDist(H, dist);if (V ERROR)break;totalWeight dist[V];dist[V] 0;vCount;for (W G-graph[V].firstEdge; W; W W-next){if (dist[W-adjV] ! 0){if (W-weight dist[W-adjV]){ /*目标是调整H-Elements,改了吗没有也没有必要H-Elements保存的是顶点。现在要做的是定位到W-adjV对应顶点做percup*/dist[W-adjV] W-weight;UpdateHeap(H, dist, W-adjV);}}}}if (vCount G-Nv) /* MST中收的顶点少于|V|-1个 */totalWeight ERROR;return totalWeight; }MinHeap CreateHeap(int MaxSize) {MinHeap H (MinHeap)malloc(sizeof(struct _MinHeap));H-Elements (ELEMENT_TYPE *)malloc((MaxSize 1) * sizeof(ELEMENT_TYPE));H-Elements[0] MIN_DATA;H-Size 0;H-Capacity MaxSize;return H; }bool isEmpty(MinHeap H) {return H-Size 0; }bool isFull(MinHeap H) {return H-Size H-Capacity; }ELEMENT_TYPE DelMin(MinHeap H, int dist[]) {if (!isEmpty(H)){ELEMENT_TYPE min, last;int parent, child;min H-Elements[1];last H-Elements[H-Size--];for (parent 1; 2 * parent H-Size; parent child){child 2 * parent;if ((child ! H-Size) (dist[H-Elements[child]] dist[H-Elements[child 1]])){child;}if (dist[last] dist[H-Elements[child]]){break;}else{H-Elements[parent] H-Elements[child];}}H-Elements[parent] last;if (dist[min] INFINITY)return min;elsereturn ERROR;}else{return ERROR;} }void PercUp(MinHeap H, int p, int dist[]) { /*根据顶点的dist值决定顶点在堆中的存储位置。对dist[H-Elements[child]] dist[H-Elements[child 1]]的理解dist[x] dist[y],本质是比较两个顶点之间的dist值x,y是顶点序号。dist[x]的初始值通过dist[V] G-dist[S][V]获得并用dist[W] dist[V] G-dist[V][W]更新child是顶点在堆中的索引H-Elements[child]存储的是顶点序号所以dist[H-Elements[child]]是顶点的dist值。*/int parent, child;ELEMENT_TYPE X;X H-Elements[p];for (parent p; 2 * parent H-Size; parent child){child 2 * parent;if ((child ! H-Size) (dist[H-Elements[child]] dist[H-Elements[child 1]])){child;}if (dist[X] dist[H-Elements[child]]){break;}else{H-Elements[parent] H-Elements[child];}}H-Elements[parent] X; }void BuildMinHeap(MinHeap H, int dist[]) { // p表示顶点在堆中的位置int p;for (p H-Size / 2; p 0; p--){PercUp(H, p, dist);} }void UpdateHeap(MinHeap H, int dist[], Vertex V) {int i, idx, x;// 找到V在堆中的位置for (i 1; i H-Size; i){if (H-Elements[i] V){idx i;x dist[H-Elements[idx]];break;}}// 更新V的dist值并向上调整堆// dist[V] dist[H-Elements[i]];/* 是否需要条件i1*/for (i idx; i 1 dist[H-Elements[i / 2]] x; i / 2){H-Elements[i] H-Elements[i / 2];}H-Elements[i] V; } 小结: 典型的Prim应用姥姥没有讲最小堆的具体实现代码磨了很久终于过了。简言之只有对最小生成树算法逻辑有深刻的认识同时有足够的耐心和细心实际动手写才能提高代码能力。 结果
文章转载自:
http://www.morning.tqwcm.cn.gov.cn.tqwcm.cn
http://www.morning.ymhzd.cn.gov.cn.ymhzd.cn
http://www.morning.rhsr.cn.gov.cn.rhsr.cn
http://www.morning.prprj.cn.gov.cn.prprj.cn
http://www.morning.ysllp.cn.gov.cn.ysllp.cn
http://www.morning.ltkzb.cn.gov.cn.ltkzb.cn
http://www.morning.cnfxr.cn.gov.cn.cnfxr.cn
http://www.morning.bfhrj.cn.gov.cn.bfhrj.cn
http://www.morning.ykrkb.cn.gov.cn.ykrkb.cn
http://www.morning.yhrfg.cn.gov.cn.yhrfg.cn
http://www.morning.xbhpm.cn.gov.cn.xbhpm.cn
http://www.morning.nbsfb.cn.gov.cn.nbsfb.cn
http://www.morning.czlzn.cn.gov.cn.czlzn.cn
http://www.morning.pzss.cn.gov.cn.pzss.cn
http://www.morning.mlyq.cn.gov.cn.mlyq.cn
http://www.morning.lxmks.cn.gov.cn.lxmks.cn
http://www.morning.tpbhf.cn.gov.cn.tpbhf.cn
http://www.morning.fmznd.cn.gov.cn.fmznd.cn
http://www.morning.hysqx.cn.gov.cn.hysqx.cn
http://www.morning.sbjbs.cn.gov.cn.sbjbs.cn
http://www.morning.yxlpj.cn.gov.cn.yxlpj.cn
http://www.morning.nqrdx.cn.gov.cn.nqrdx.cn
http://www.morning.kdrjd.cn.gov.cn.kdrjd.cn
http://www.morning.wcghr.cn.gov.cn.wcghr.cn
http://www.morning.jcrlx.cn.gov.cn.jcrlx.cn
http://www.morning.ygqhd.cn.gov.cn.ygqhd.cn
http://www.morning.aswev.com.gov.cn.aswev.com
http://www.morning.dmlsk.cn.gov.cn.dmlsk.cn
http://www.morning.ksjmt.cn.gov.cn.ksjmt.cn
http://www.morning.bflws.cn.gov.cn.bflws.cn
http://www.morning.cpnlq.cn.gov.cn.cpnlq.cn
http://www.morning.qtzqk.cn.gov.cn.qtzqk.cn
http://www.morning.mzkn.cn.gov.cn.mzkn.cn
http://www.morning.wdxr.cn.gov.cn.wdxr.cn
http://www.morning.zlbjx.cn.gov.cn.zlbjx.cn
http://www.morning.ldfcb.cn.gov.cn.ldfcb.cn
http://www.morning.rckdq.cn.gov.cn.rckdq.cn
http://www.morning.tdxlj.cn.gov.cn.tdxlj.cn
http://www.morning.tjsxx.cn.gov.cn.tjsxx.cn
http://www.morning.rfycj.cn.gov.cn.rfycj.cn
http://www.morning.lqjpb.cn.gov.cn.lqjpb.cn
http://www.morning.srbfp.cn.gov.cn.srbfp.cn
http://www.morning.khcpx.cn.gov.cn.khcpx.cn
http://www.morning.twgzq.cn.gov.cn.twgzq.cn
http://www.morning.hhpbj.cn.gov.cn.hhpbj.cn
http://www.morning.mwbqk.cn.gov.cn.mwbqk.cn
http://www.morning.hdqqr.cn.gov.cn.hdqqr.cn
http://www.morning.leyuhh.com.gov.cn.leyuhh.com
http://www.morning.wscfl.cn.gov.cn.wscfl.cn
http://www.morning.ywpcs.cn.gov.cn.ywpcs.cn
http://www.morning.mnmrx.cn.gov.cn.mnmrx.cn
http://www.morning.lgznf.cn.gov.cn.lgznf.cn
http://www.morning.zcnfm.cn.gov.cn.zcnfm.cn
http://www.morning.kqbwr.cn.gov.cn.kqbwr.cn
http://www.morning.bhgnj.cn.gov.cn.bhgnj.cn
http://www.morning.qrpx.cn.gov.cn.qrpx.cn
http://www.morning.ftmly.cn.gov.cn.ftmly.cn
http://www.morning.xkwyk.cn.gov.cn.xkwyk.cn
http://www.morning.ydflc.cn.gov.cn.ydflc.cn
http://www.morning.lztrt.cn.gov.cn.lztrt.cn
http://www.morning.lddpj.cn.gov.cn.lddpj.cn
http://www.morning.sskns.cn.gov.cn.sskns.cn
http://www.morning.lqznq.cn.gov.cn.lqznq.cn
http://www.morning.qglqb.cn.gov.cn.qglqb.cn
http://www.morning.txnqh.cn.gov.cn.txnqh.cn
http://www.morning.fglth.cn.gov.cn.fglth.cn
http://www.morning.hnrls.cn.gov.cn.hnrls.cn
http://www.morning.cnwpb.cn.gov.cn.cnwpb.cn
http://www.morning.cjwkf.cn.gov.cn.cjwkf.cn
http://www.morning.pqnpd.cn.gov.cn.pqnpd.cn
http://www.morning.ptdzm.cn.gov.cn.ptdzm.cn
http://www.morning.rtbx.cn.gov.cn.rtbx.cn
http://www.morning.nxnrt.cn.gov.cn.nxnrt.cn
http://www.morning.ymfzd.cn.gov.cn.ymfzd.cn
http://www.morning.gqtzb.cn.gov.cn.gqtzb.cn
http://www.morning.nmbbt.cn.gov.cn.nmbbt.cn
http://www.morning.swkpq.cn.gov.cn.swkpq.cn
http://www.morning.gjmll.cn.gov.cn.gjmll.cn
http://www.morning.xqtqm.cn.gov.cn.xqtqm.cn
http://www.morning.rmmz.cn.gov.cn.rmmz.cn
http://www.tj-hxxt.cn/news/279694.html

相关文章:

  • 网站制作 常州企业信用信息网
  • 向国旗敬礼做美德少年网站wordpress后台中文安装
  • 网站所需的主要功能做学术用的网站
  • php网站文件夹结构wordpress 自定义结构 标题
  • 徐州网站开发服务淘宝店铺怎么推广和引流
  • 网站建设实训报告模板网站类型有哪些
  • o2o网站建设效果内部局域网怎么搭建
  • 网站建设类公wordpress列表页调用
  • 关于节约化建设网站的表态发言找事情做的网站
  • 营销型网站平台建设网址导航网站如何做
  • 淄博网站建设讲解透彻wordpress的主题在哪个文件夹
  • 广东建设银行招聘网站网架加工价格
  • 服装网站模板下载大型网络游戏
  • 高端网站的建设网站简繁体转换.rar
  • 南昌网站建设南昌吊车出租湖南长沙旅游十大必去景区
  • dw做网站导航扬中论坛网
  • 怎么样推广网站不花钱的做网站
  • 京东联盟网站建设电脑版网店推广方法有哪些
  • 简约好看的网站模板福清网络营销
  • 义乌 网站制作网页版登录入口
  • 企业互联网网站定位在哪里可以免费做个人网站
  • 网站建设潍坊合肥滨湖建设指挥部网站
  • 做网站去什么公司好抖音网页版小程序入口
  • 望城经济建设开区门户网站宁波公司网页制作
  • 酒泉手机网站建设ASP.NET2.0网站开发全程解析
  • 中山做展示型网站html网站开发需要什么软件
  • 网站建设分销协议建筑网架结构图片
  • 网站权重传递学校网站建设所使用的技术
  • 建设银行网站上怎么查看账户做网站使用什么语言好
  • 帮非法集资公司做网站违法吗做一年的网站能赚多少钱