关于最小生成树中的路径及遍历

对于一颗生成树来说,我们生成的过程是一条边一条边的增加的,所以我们只需要建立一个数组path[]来记录我们都选择了那些边,之后使用path[]来建边遍历。

记录部分:

void Kruskal()
{
    int num=0,j=0;
    for(int i=1;i<=n;++i) f[i]=i;
    for(int i=1;i<=m;++i)
    {
        int eu=find(edge[i].from);
        int ev=find(edge[i].to);
        if(eu^ev)
        {
            f[eu]=ev;
            path[++j]=edge[i];
            num++;
        }
        if(num==n-1) break;
    }
    final=j;
}

遍历部分:

for(int i=1;i<=final;++i)    addedge(path[i].from,path[i].to),addedge(path[i].to,path[i].from);
    vis[1]=1;
    get_col(1,1);

void get_col(int x,int c)
{
    col[x]=c;
    for(int i=head[x];i;i=_edge[i].next)
        if(!vis[_edge[i].to])
        {
            vis[_edge[i].to]=1;
            get_col(_edge[i].to,c^1);
        }
}

void addedge(int from,int to)
{
    _edge[++num_edge].from=from;
    _edge[num_edge].to=to;
    _edge[num_edge].next=head[from];
    head[from]=num_edge;
}

原文地址:https://www.cnblogs.com/-hhs/p/11225154.html

时间: 2024-08-27 23:45:03

关于最小生成树中的路径及遍历的相关文章

二叉树中存在路径等于给定值

题目:输入一个二叉树和一个整数,打印出二叉树中所有和给定整数值相等的路径. 分析:先画图 明白几点: 1)根据题意,我们是要遍历整个树才能确定所有符合条件的路径.显然应该从根节点出发,那么我们就应该采用先序遍历.这里遍历就采用递归更简单. 2)遍历完了后如何保存路径呢?这里我们是采用vector而不是stack因为遍历的时候从根节点打印. 每次遍历一个结点,就将其压栈,当前结点访问结束后,递归函数将自动回到父节点,因此我们在函数退出之前要在路径上删除当前结点并减去当前结点的值. #include

矩阵中的路径-剑指Offer

矩阵中的路径 题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子.如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子. 例如 a b c e s f c s a d e e 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后,路径不能再次进入该格子.

两点间所有路径的遍历算法

转自:http://blog.sina.com.cn/s/blog_5ff8e88e01013lot.html 这几天,用到了这个功能,但在网上找到了一份资料,思路写的很清晰,但代码有错误.因此,我就按着这个思路,自己整理了代码,现在说明如下:(引用前部分思想,更新后部分代码) 两点间所有路径的遍历算法 中国海洋大学 信息科学与工程学院 熊建设 梁磊 摘要:本文首先简单介绍图的深度优先遍历算法,接着根据图的深度优先遍历算法求出连通图中两点间所有路径,并给出代码. 关键词:图.深度优先遍历.算法

透过现象看webpack处理css文件中图片路径转换的具体过程

webpack是目前使用比较流行的一个前端模块打包器,前端的任何资源都被当成一个模块来处理,如图片.css文件等等.在基于webpack构建的前端项目中,一般都会配置有关css文件处理的规则,这其中也包括css文件中图片资源的处理,那么webpack到底是怎么处理它的呢?笔者之前也遇到过类似图片路劲的问题,为此还写过一篇博文webpack生成的css文件background-image url图片无法加载.今天就来说说webpack是怎么处理css文件中的图片路径的,首先上一个具体的例子. 一个

《剑指offer》第十二题:矩阵中的路径

// 面试题12:矩阵中的路径 // 题目:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有 // 字符的路径.路径可以从矩阵中任意一格开始,每一步可以在矩阵中向左.右. // 上.下移动一格.如果一条路径经过了矩阵的某一格,那么该路径不能再次进入 // 该格子.例如在下面的3×4的矩阵中包含一条字符串“bfce”的路径(路径中的字 // 母用下划线标出).但矩阵中不包含字符串“abfb”的路径,因为字符串的第一个 // 字符b占据了矩阵中的第一行第二个格子之后,路径不能再次进入

【04-10】java中的路径

java中的路径 System.getProperty("user.dir")  获取工程的绝对路径 Class.class.getClass().getResource("/").getPath()  类的绝对路径 jsp中的路径 request.getRequestURI() 得到相对地址 request.getRequestURL()  得到地址栏地址 request.getContextPath() 得到工程名 request.getServletPath(

理解java Web项目中的路径问题

本文以项目部署在tomcat服务器为例,其他相信也是一样的. 先说明请求页面的写法,在web中,页面路径主要写的有以下几种 1.请求重定向 2.浏览器的请求被服务器请求到新页面(我称为“转发”) 3.超链接 4.form表单提交的action 为了演示路径写法,首先先建一个项目(项目名WebPath),并建立一个servlet(PathServlet) 目录结构如下 以访问目录中index.jsp文件为例,jxf.path.PathServlet.jave中对以上四种路径的写法(红色部分) 1

Java中forEach, 用来遍历数组

这里的for是Java中forEach, 用来遍历数组的.for(int i : d) 就是遍历int型数组d的 每一次访问数组d的时候读取的数据放入int型的i中.和for(int i=0;i<d.length();i++)是一样的,但是forEach的可用场合较多. public class e1 {public static void main(String[] args){ int[]d=new int[] {1,2,3,4,64,1234,3124,657,22}; System.ou

升级CUDA版本导致VS2010错误:未找到导入的项目XXX,请确认&lt;Import&gt;声明中的路径正确,且磁盘上存在该文件。。。。

VS2010错误:未找到导入的项目XXX,请确认<Import>声明中的路径正确,且磁盘上存在该文件. E:\IGSNRR\dev\PhDThesisCode_CUDA\gtcg\gtcg.vcxproj : error : 未找到导入的项目“C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizations\CUDA 5.5.props”.请确认 <Import> 声明中的路径正确,且磁盘上存在该文件. E: