用邻接链表存图 详讲
时间:2022-07-24
本文章向大家介绍用邻接链表存图 详讲,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在许多图论的题目中,我们首先要存图,之前我已经学习了用邻接矩阵存图 ,但是看许多大佬都是用邻接表存图,觉得还是学习下好!
那么我们经过一个例题来学习 邻接链表存图。
有N个点,从 1 到 N 。有M 条边 ,每条用连接的2 个顶点表示。请输入每个顶点 通过 边相邻的顶点。 输入格式 : 第一行 ,N , M,两个整数,下面M行,每行两个整数,表示一条边 。
输出格式 : N行 , 第i行 的第一个数 k 表示 有多少边和 i号顶点相连 ,后面 有k个数 , 表示 哪个k个顶点和 i 连接为 一边。
#include<bits/stdc++.h>
#define maxn 200001
using namespace std;
struct node{
int v;
int next;
}a[maxn];
int n,m,p;//p为数组的空余空间下表
int k[5001],c[5001];//邻接链表表头,k数组记长度
void add(int u,int v){ // 把 v点插入到 u点的邻接链表
a[++p].v = v; //申请一个新节点
a[p].next = c[u];
c[u] = p; // 插入到u链表头
k[u]++; //链表长度增加
}
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
int u,v;
cin>>u>>v;
add(u,v);
add(v,u);
}
for(int i=1;i<=n;i++){
cout<<k[i]<<" ";
for(int j =c[i];j>0;j=a[j].next)
cout<<a[j].v<<" ";
cout<<endl;
}
return 0;
}
测试数据
输入:
5 6
1 3
2 4
1 4
2 3
3 5
2 5
输出:
2 4 3
3 5 3 4
3 5 2 1
2 1 2
2 2 3
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- YOLO算法最全综述:从YOLOv1到YOLOv5
- codeforce893C (并查集)
- codeforces 544C(完全背包求方案数)
- SCU2511(单调栈)
- B. Ternary String(贪心)
- codeforces 940B(贪心)
- codeforces 429A(dfs)
- codeforces 1182B (DFS)
- codeforces 509B(构造,思维)
- codeforces 1257C(map)
- codeforces 977D(DFS)
- codeforces 580C(dfs)
- codeforces 1155B(博弈)
- XXXXX codeforces1364A(数学)
- JAVA入门学习十一