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

赣州网站建设服务东营住房和城乡建设部网站

赣州网站建设服务,东营住房和城乡建设部网站,广州分公司注册,规划和设计一个网站最小生成树概念 参考#xff1a;什么是最小生成树#xff1f; Minimum Spanning Tree 何为生成树#xff1f; 生成树是指一个联通图的极小的连通子图#xff0c;它包含了图中的所有n个顶点#xff0c;并只有n-1条边#xff08;构成一棵树#xff09; 生成树的一些性…最小生成树概念 参考什么是最小生成树 Minimum Spanning Tree 何为生成树 生成树是指一个联通图的极小的连通子图它包含了图中的所有n个顶点并只有n-1条边构成一棵树 生成树的一些性质 一个连通图可以有多种生成树如上图所示生成树中不存在环任何一个边的加入都会使得生成树中出现环 何为最小生成树 最小生成树是针对一个带权图来说的就是指原图中能构成的所有生成树中边权和最小的一颗生成树 对于下面的连通图 可以有多种选取边即构成了生成树的情况 我们称权值和最小的树为最小生成树 最小生成树有什么意义呢 接上图如果我们需要在某城市之间修建道路点与点之间的加权边就是两城市道路的维修费如果我们想找到一种将所有城市都连通起来并且使得道路修建费用最小的一种方案那么就要选择使用最小生成树。 最小生成树构建方法 两种方法都是基于贪心 有一点其实我不太明白。“Kruskal算法维护的是边所以不需要对于无向图存储两次边。Prim维护的是集合之间点的关系因此需要对无向图存储两次边 克鲁斯卡尔算法Kruskal 算法思想 将所有的带权边按照权值从小到大排列从最小的开始选择如果加入该边后不会产生环则加入反之则不加入。直到已经选择了n-1条边。 这里不会产生环的判定比较困难因此可以换一下想法 就是只要选择的边的两端点不在同一连通块中即可。如下所示 使用并查集就可以检查联通问题了 #includeiostream #includealgorithmusing namespace std;const int N2*1e510;int n,m; int p[N]; int ans0;//最终权值 int res0;//已经放入的边数struct nn{int a;int b;int w; }node[N];int cmp(nn a, nn b){return a.wb.w; }int find(int x){if(p[x]!x) p[x]find(p[x]);return p[x]; }int kruskal(){for(int i1;in;i)p[i]i;for(int i1;im;i){//遍历m条边int anode[i].a, bnode[i].b, wnode[i].w;afind(a); bfind(b);if(a!b){//如果不在一个联通图中p[a]b;//连接两个点answ;res;}if(resn-1){return res;}}return res; }int main(){cinnm;for(int i1;im;i){cinnode[i].anode[i].bnode[i].w;}sort(node1,node1m,cmp);if(kruskal()n-1)coutansendl;elsecoutimpossibleendl;return 0; }普里姆算法Prim 和kruskal算法遍历边不同的是prim算法是对点进行遍历 算法思路 对于每个点每次找到一个集合外的距离该集合最近的点t。该集合是一个已经确定了的连通块 用点t更新集合外点到集合的距离就是找集合外和t有连接的点如果更小就更新最后将点t放入集合中。这里描述的不是很清楚 st[j]0(t-1||dist[t]dist[j]) 注意这里的判断首先判断该点是否已经进入集合然后再与上t-1和大小的或运算 #includeiostream #includealgorithm #includecstringusing namespace std;const int N510,INF0x3f3f3f3f; int n,m;int g[N][N];//用于存储边 int dist[N];//点距离集合的距离 int st[N];//表示是否已经进入集合 int ans0;int prim(){dist[1]0;//强制一开始选择的点就是点1for(int i1;in;i){//外层循环是指循环n次以遍历所有n个点int t-1;for(int j1;jn;j){if(st[j]0(t-1||dist[t]dist[j])){tj;} }//找到最短的dist下标为tif(dist[t]INF) return INF;//说明没有点能够到达当前的集合ansdist[t];for(int j1;jn;j){if(st[j]0j!t){//更新所有集合外的点到该集合的距离dist[j]min(dist[j],g[t][j]);}}st[t]1;//将点加入集合}}int main(){cinnm;memset(g,0x3f,sizeof g);for(int i1;im;i){int a,b,c;cinabc;g[a][b]g[b][a]min(g[a][b],c);}memset(dist,0x3f,sizeof dist);if(prim()INF)coutimpossibleendl;elsecoutansendl;return 0; }
http://www.hkea.cn/news/14365106/

相关文章:

  • 手机网站适配代码广州建站招聘
  • 网站制作费用大概多少农业品牌建设的基础是
  • wordpress网站攻击排版设计网站有哪些
  • 长春哪有做网站公司吉林省建设监理协会网站
  • ipv6域名解析 做网站基于wap的企业网站设计与实现
  • 如何做网站小编烟台专业做网页的公司
  • 合肥网站设计建主机怎么做网站服务器
  • 网站建设开发 脚本语言专注邯郸建设手机网站
  • 南通做网站公司常见的简单的app开发
  • 织梦网站底部黑链东莞品牌策划公司
  • 行业网站建设的开发方案wordpress .po
  • 网站错误代码 处理wordpress首页不显示整篇文章
  • jsp网站开发实例视频教程建各公司网站要多少钱
  • 网站建站优化seo应用领域
  • 深圳建设网站需要多少钱温州市职业中专学校
  • 网站头部ps婚庆网站策划
  • 设计公司网站应该包括的信息建wap手机网站
  • 山西网站建设推荐选择建设网站公司要注意什么
  • 网站建设方案确认表ampserv安装wordpress
  • 个人备案网站营业执照88建网站
  • 做网站主播要什么条件做外汇著名网站
  • 社交网站开发用到的技术wordpress电商主题数据库
  • 房地产行业网站开发前端自适应模板
  • 一个网站两个空间汕头网站推广优化
  • 建设网站的法律可行性wordpress自动获取标签
  • 自己搭建一个博客网站手机制作网站软件下载
  • 成品网站灬1688html网页设计思路
  • 中国有名的网站建设公司云虚拟主机做视频网站
  • 淘宝网站建设基本流程深圳黄页企业名录
  • 文创网站郴州网站建设设计