zoukankan      html  css  js  c++  java
  • 从0开始 图论学习 前向星表示法

    前向星的建立和遍历

    writer:pprp

    注意:从0开始不是从1开始

    链式前向星算法可以对应点特别多的情况,可以存储重复边,但不能直接判断图中任意两点是有边。

    代码如下:

    //writer:pprp
    //前向星表示
    //注意:点的编号也是从0开始的,不能从1开始
    #include <iostream>
    #include <algorithm>
    #include <cstring>
    
    using namespace std;
    const int maxn = 1000;
    struct node
    {
        int op,ed,w;
    };
    node e[maxn];
    int head[maxn];
    bool cmp(node n1, node n2)
    {
        if(n1.op == n2.op && n1.ed == n2.ed)
            return n1.w < n2.w;
        if(n1.op == n2.op)
            return n1.ed < n2.ed;
        return n1.op < n2.op;
    }
    int main()
    {
        int vv, ee;
        cin >> vv >> ee;
        for(int i = 0; i < ee; i++)
            cin >> e[i].op >> e[i].ed >> e[i].w;
        sort(e,e+ee,cmp);
        memset(head,-1,sizeof(head));
        head[e[0].op] = 0;
        for(int i = 0 ; i < ee ; i ++)
        {
            if(e[i].op != e[i-1].op)
                head[e[i].op] = i;
        }
    
        for(int i = 0; i < vv; i++)
        {
            for(int k = head[i]; e[k].op == i && k < ee; k++)
            {
                cout <<"op:" << e[k].op << " ed:" << e[k].ed << " w:" << e[k].w << endl;
            }
        }
    
        return 0;
    }
    
    
  • 相关阅读:
    JSTL之迭代标签库
    java中的IO流
    浅谈代理模式
    TreeSet集合
    网络编程之UDP协议
    Java中的多线程
    Java中的面向对象
    JavaScript 函数表达式
    JavaScript 数据属性和访问器属性
    JavaScript 正则表达式语法
  • 原文地址:https://www.cnblogs.com/pprp/p/7786687.html
Copyright © 2011-2022 走看看