zoukankan      html  css  js  c++  java
  • 邻接表之链式前向星

    链式前向星比vector邻接表在内存性能和时间性能上更好。

    链式前向星用法详见以下模板代码:

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=1e3+10;//最大点数
    const int maxm=1e6+10;//最大边数
    struct node{int to,w,next;}edge[maxm];//边集,to终点,w边权,next同起点的上一条边的编号
    int n,m,head[maxn];//输入n个点,m条边
    struct Chain_Forward_Star{//链式前向星
        int cnt;
        void init(){//初始化
            cnt=0;
            memset(head,-1,sizeof(head));//初始化为-1
        }
        void add(int u,int v,int w){//加边,u起点,v终点,w边权
            edge[cnt].to=v;
            edge[cnt].w=w;
            edge[cnt].next=head[u];//同样以u为起点的上一条边的编号
            head[u]=cnt++;//更新以u为起点的上一条边的编号
        }
    }CFS;
    int main()
    {
        int u,v,w;
        cin>>n>>m;
        CFS.init();
        for(int i=1;i<=m;i++){
            cin>>u>>v>>w;//u起点,v终点,w边权
            CFS.add(u,v,w);
            //CFS.add(v,u,w);
        }
        for(int i=1;i<=n;i++){
            cout<<i<<endl;
            for(int j=head[i];~j;j=edge[j].next)//倒序遍历以i为起点的边,~j即j!=-1
                cout<<i<<' '<<edge[j].to<<' '<<edge[j].w<<endl;
            cout<<endl;
        }
        return 0;
    }
  • 相关阅读:
    Linux-vim
    [转载]关于eve模拟器上的VPS配置问题
    [转载]cisco 出现%Error opening tftp://255.255.255.255/cisconet.cfg解决方法
    CCNA-NAT
    CCNA-DHCP
    CCNA-ACL
    CCNA-OSPF 配置
    CCNA-OSPF 基础
    枚举的应用
    带索引的遍历
  • 原文地址:https://www.cnblogs.com/HOLLAY/p/11517722.html
Copyright © 2011-2022 走看看