zoukankan      html  css  js  c++  java
  • C++算法 链式前向星存图

    这个东西恶心了我一阵子,那个什么是什么的上一个一直是背下来的,上次比赛忘了,回来有个题也要用,只能再学一遍,之前也是,不会为什么不学呢。我觉得是因为他们讲的不太容易理解,所以我自己给那些不会的人们讲一讲。

    首先,链式前向星存图用3个变量,一个数组。3个变量分别是,zd:路径的终点,cd:路径的长度,net:他开头一样的上一个路径是第几条。那个数组我们叫他h,h[i]表示上一次从i开始走是第几次输入。

    h有点难理解,比如有一个路径,从1到3,从1开始,这又是第1个,net标记完后,h[1]就会被替换成1。h[i]原来是0,表示没有出现过从i开始的路径。

    然后又遇到了一个路径,是从1到5,上一次从1出发是1,把他的net标记成h[1]的值,他是第二个,h[1]就会被替换成2,以此类推。

    void hanshu(long long t,long long w,long long c)//t是出发点,w是终点,c是长度
    {
    	a[bl].net=sz[t];//net标记成t上一次出现的位置
    	a[bl].cd=c;//第bl条线的长度
    	a[bl].wei=w;//第bl条线的终点
    	sz[t]=bl;//标记上一个出现的t是他自己,指向它。
    	bl++;
    } 

    输入:

    hanshu(kt,jw,cd);
    //3个参数分别表示开头,终点和长度。
    //如果是无向图,还要加下面的一行。
    hanshu(jw,kt,cd);
    

    然后就是结尾。

    for(int i=sz[x];i!=0;i=sz[x].net)//x是你要找的出发点,如果i是0,就表示他是第一个,终止。否则i就会指向上一个开头是x的位置。
    {
      //想要什么就写什么。
    }
    

    结束了。快去试试吧。

  • 相关阅读:
    利用python 学习数据分析 (学习四)
    numpy 模块常用方法
    利用python 学习数据分析 (学习三)
    numpy 常用方法2
    瞎JB逆
    Codeforces 907 矩阵编号不相邻构造 团操作状压DFS
    AT Regular 086
    矩阵快速幂 求斐波那契第N项
    指数循环节(指数降幂)
    Educational Codeforces Round 32
  • 原文地址:https://www.cnblogs.com/lichangjian/p/12368896.html
Copyright © 2011-2022 走看看