下载此文档

zhxfl 最小树形图.docx


文档分类:IT计算机 | 页数:约6页 举报非法文档有奖
1/6
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/6 下载此文档
文档列表 文档介绍
zhxfl 最小树形图.docx#include<iostream>#include<cstring>#include<cstdio>#include<cmath>usingnamespacestd;#defineINF99999999#definemin(a,b)((a)<(b)?(a):(b))structpoint{   doublex;   doubley;}p[200];intpre[200];//记录该节点的前驱doublegraph[200][200],ans;//图数组和结果bool  visit[110],circle[110];//visit记录该点有没有被访问过,circle记录改点是不是在一个圈里int   n,m,root;//顶点数+边数+根节点标号voiddfs(intt)//一个深度优先搜索,搜索出一个最大的联通空间{   inti;   visit[t]=true;   for(i=1;i<=n;++i)   {       if(!visit[i]&&graph[t][i]!=INF)           dfs(i);   }}boolcheck()//这个函数用来检查最小树形图是否存在,即如果存在,那么一遍dfs后,应该可以遍历到所有的节点{   memset(visit,false,sizeof(visit));   dfs(root);   for(inti=1;i<=n;++i)   {       if(!visit[i])           returnfalse;   }   returntrue;}doubledist(inti,intj){   returnsqrt((p[i].x-p[j].x)*(p[i].x-p[j].x)+(p[i].y-p[j].y)*(p[i].y-p[j].y));}intexist_circle()//判断图中是不是存在有向圈{   inti;   intj;   root=1;pre[root]=root;   for(i=1;i<=n;++i)   {       if(!circle[i]&&i!=root)       {           pre[i]=i;graph[i][i]=INF;           for(j=1;j<=n;++j)           {               if(!circle[j]&&graph[j][i]<graph[pre[i]][i])//找出指向i最小的                   pre[i]=j;           }       }   }//这个for循环负责找出所有非根节点的前驱节点   for(i=1;i<=n;++i)   {       if(circle[i])           continue;       memset(visit,false,sizeof(visit));       intj=i;       while(!visit[j])       {           visit[j]=true;           j=pre[j];       }       if(j==root)           continue;       returnj;   }//找圈过程,最后返

zhxfl 最小树形图 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数6
  • 收藏数0 收藏
  • 顶次数0
  • 上传人dyx110
  • 文件大小17 KB
  • 时间2020-05-20
最近更新