邻接表存图

存图方式之邻接表

头文件
#include<vector>
代码实现
  • 无权图
#include <stdio.h>
#include <vector>
vector<int> con[109];

int main()
{
        int i,p,j,n,t;
        int m,a,b;
        scanf(“%d%d”,&n, &m);
        while(m—)                             //存图
        {
            scanf(“%d%d”,&a,&b);
            con[a].push_back(b);
            con[b].push_back(a);  // 无向图
        } 
        
        for(i = 1; i <= n ; i++) {         //遍历图
                for(j = 0; j < con[i].size(); j++) {
                        printf(“%d -> %d\n”, i, con[i][j]);
                }
        }
        
        return 0;
}

  • 有权图

#include <stdio.h>
#include <vector>


struct edge{
    int to;
    int w;    
};

vector<struct edge> con[109];

int main()
{
        int i,p,j,n,t;
        int m,a,b,c;
        struct edge mid;
        cin >> n >> m;
        while(m—)                                   //存图
        {
                cin >> a >> b >> c;
                mid.to = b;
                mid.w = c;
                con[a].push_back(mid);
                
                mid.to = a;                             //无向图
                con[b].push_back(mid);
        }
        
        for(i  = 1; i  <= n; i++)
        {
                for(j = 0; j < con[i].size(); j++)
                {
                        cout << con[i][j].to << “  ” << con[i][j].w << endl;
                }
        }
        return 0;
        
}

posted @ 2019-04-26 22:27  Daybreaking  阅读(134)  评论(0编辑  收藏  举报