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

工业互联网平台体系seo页面内容优化

工业互联网平台体系,seo页面内容优化,大二网页设计作业,wordpress伪装帝国cms题目描述 给定一个 n 个点 m 条边的无向图#xff0c;图中可能存在重边和自环#xff0c;边权可能为负数。 求最小生成树的树边权重之和#xff0c;如果最小生成树不存在则输出 impossible。 给定一张边带权的无向图 G(V,E)#xff0c;其中 V 表示图中点的集合#xff…题目描述 给定一个 n 个点 m 条边的无向图图中可能存在重边和自环边权可能为负数。 求最小生成树的树边权重之和如果最小生成树不存在则输出 impossible。 给定一张边带权的无向图 G(V,E)其中 V 表示图中点的集合E 表示图中边的集合n|V|m|E|。 由 V 中的全部 n 个顶点和 E 中 n−1 条边构成的无向连通子图被称为 G 的一棵生成树其中边的权值之和最小的生成树被称为无向图 G 的最小生成树。 输入格式 第一行包含两个整数 n 和 m。 接下来 m 行每行包含三个整数 u,v,w表示点 u 和点 v 之间存在一条权值为 w 的边。 输出格式 共一行若存在最小生成树则输出一个整数表示最小生成树的树边权重之和如果最小生成树不存在则输出 impossible。 数据范围 1≤n≤10^5, 1≤m≤2∗10^5, 图中涉及边的边权的绝对值均不超过 1000。 输入样例 4 5 1 2 1 1 3 2 1 4 3 2 3 2 3 4 4输出样例 6 算法思路 将所有边按照权值的大小进行升序排序然后从小到大一一判断。 如果这个边与之前选择的所有边不会组成回路就选择这条边分反之舍去。 直到具有 n 个顶点的连通网筛选出来 n-1 条边为止。 筛选出来的边和所有的顶点构成此连通网的最小生成树。 判断是否会产生回路的方法为使用并查集。 在初始状态下给各个个顶点在不同的集合中。 遍历过程的每条边判断这两个顶点的是否在一个集合中。 如果边上的这两个顶点在一个集合中说明两个顶点已经连通这条边不要。如果不在一个集合中则要这条边。 当我们遍历完了所有的边得到的生成树的边数是n-1则满足最小生成树。 我们使用结构体存储每条边。并且在从小到大排序边权重时使用sort函数这就要用到运算符重载。 示例代码 #includeiostream #includealgorithm using namespace std;const int N1e510,M2e510,INF0x3f3f3f3f; int n,m; int p[N];//思路按权值从小到大排序边如果这条边与之前的边不会形成回路就选择这条边直到找到最小生成树遍历了图里的n个顶点和n-1条边 //我们使用并查集来判断是否产生回路一开始各顶点在不同的集合中遍历每条边判断它的两个顶点是否在一个集合里面如果在的话说明两个点之前连通了通过其他的点如果不在就选择这条边 struct Edge {int a,b,w;bool operator (const Edge W)const //按权重排序括号中的const表示参数W对象不会被修改最后的const表明调用函数对象不会被修改{return wW.w; //w是调用的对象W.w是和它比较的比如KJ就是K.wJ.w} }edges[M];int find(int x) //并查集找祖宗节点 {if(x!p[x]) p[x]find(p[x]); //路径压缩找祖宗节点return p[x]; }int kruskal() {sort(edges,edgesm); //所有边按权重从小到大排序,sort函数会用到重载的for(int i1;in;i) //初始化并查集{p[i]i;}int res0,cnt0;for(int i0;im;i) //遍历所有边{int aedges[i].a, bedges[i].b, wedges[i].w;afind(a),bfind(b); //找到两个点的祖宗节点if(a!b) //两个点不在同一个集合中说明它们还没有连通这条边可以加入到生成树里面{p[a]b; //把这两个点加入集合要注意是p[b]a或者p[a]b不要写成ap[b]因为后者是把p[b]赋值给a无意义我们要改变的是集合的祖宗节点也就是p[]resw; //这条边加入最小生成树cnt; //统计的边加一}}if(cnt!n-1) return INF; //如果最小生成树的边不为n-1条边则不能连通return res; } int main() {scanf(%d%d,n,m);for(int i0;im;i) //输入所有边{int a,b,w;scanf(%d%d%d,a,b,w);edges[i]{a,b,w};}int tkruskal();if(tINF) puts(impossible);else printf(%d\n,t);return 0; } 特别注意 if(a!b) //两个点不在同一个集合中说明它们还没有连通这条边可以加入到生成树里面{p[a]b; //把这两个点加入集合要注意是p[b]a或者p[a]b不要写成ap[b]因为后者是把p[b]赋值给a无意义我们要改变的是集合的祖宗节点也就是p[]resw; //这条边加入最小生成树cnt; //统计的边加一} 这一段代码不要写成下面这样子 if(a!b) //两个点不在同一个集合中说明它们还没有连通这条边可以加入到生成树里面{bp[a]; //把这两个点加入集合要注意是p[b]a或者p[a]b不要写成ap[b]因为后者是把p[b]赋值给a无意义我们要改变的是集合的祖宗节点也就是p[]resw; //这条边加入最小生成树cnt; //统计的边加一} 我们要做的是合并集合也就是a的祖宗节点的父节点指向b的祖宗节点如果颠倒了顺序那么p[a]就不会发生改变也就是说a的祖宗节点的父节点依然是它自己没有完成和b的祖宗节点的合并。会报错的。  参考AcWing 859. Kruskal算法求最小生成树---海绵宝宝来喽 - AcWing
http://www.pierceye.com/news/447476/

相关文章:

  • 网站制作论文优帮云广州网站设计首选柚米
  • 唐山建设厅官方网站我有一个网站怎么做外贸
  • 荣成城市规划建设局网站宁晋网站开发
  • 福州电子商务网站手机触屏版网站开发
  • 佛山网站建设骏域开发公司综合部内部管理章程
  • 网站建设 迅雷下载西安建设工程信息网网上招投标
  • 浅析个人网站的设计论文二本网络工程就业前景
  • 网站没有做301的后果是什么苏州工业园区两学一做教育网站
  • 品牌网站建设定位湖南做网站的公司有哪些
  • mvc做的网站郑州作网站
  • 门户网站栏目建设购物类网站开发
  • 专业的网站建设企业新浪网 网站建设
  • 长春网站建设wang汕头网站建设网站
  • 自助建站网站哪个好网站做nat映射需要哪些端口
  • 免费手机网站平台注册嘉兴建站公司
  • 什么网站可以做兼职美工网站建设方案500字
  • 宁波做网站优化网站专题页怎么做
  • 西安网站建设q.479185700強网站改版301是什么意思
  • 网站推广服务 商务服务网站建设官方网站
  • 建设电影网站的关键苏州网站建设业务的公司
  • 水头哪里有做网站的店铺装修设计软件
  • 做网站的大骗子男女做爰视频免费网站
  • 建设一个网站选择的服务器安徽建站
  • 网站制作网站价格用网页制作个人网站
  • 衡水做网站报价网络工程毕设做网站
  • 做网站设计怎么样网站建设先进技术
  • 廊坊cms建站系统wd wordpress
  • vue做网站的好处是什么顺企网下载
  • 在线建站模板下载网站的软件
  • 阿里云网站全部清空怎么做重庆市渝快办官网