zoukankan      html  css  js  c++  java
  • 邻接表模板

    1.数组模拟链表实现

    struct edge{
        int u,v,w,next;
    }a[MAX];
    int E,u,v,w;
    E = 0;
    memset(head,-1,sizeof(head));
    void add(int u,int v,int w){
        a[E].u = u;a[E].v = v;a[E].w = w;
        a[E].next = head[u];head[u] =E++;
        //head记录以u为结点的边的编号,a[E].next是模拟指针
        //a是边,其中记录的是边上的结点,权值的值
    }
    for(i = head[u];i!= -1;i = a[i].next){
        //来取值进行操作
        .......
    }
    View Code

    ~u   相当于u!=-1

    2.vector实现(vector是向量,是一个可变长的动态数组,记录的是该节点相邻的所有的结点)

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    vector<int>G[MAX];
    void read_tree()
    {
        int u,v;
        scanf("%d",&n);
        for(int i = 0  ; i < n; i++){
            scanf("%d%d",&u,&v);
            G[u].push_back(v);
            G[v].push_back(u);
        }
    }//记录的是一个结点相邻的点
    for(int i = 0 ; i < G[u].size(); i ++){
        int v= G[u][u];
       ....
    }
    View Code
  • 相关阅读:
    java
    MVC4重复提交数据
    cache
    Nosql
    MVC4重复提交
    PHP Java
    .net performance
    How the Runtime Locates Assemblies
    android
    window.onscroll
  • 原文地址:https://www.cnblogs.com/zero-begin/p/4462762.html
Copyright © 2011-2022 走看看