建邻接表的两种方式
来源:互联网 发布:vs运行c语言 编辑:程序博客网 时间:2024/05/19 13:46
/* * 构建邻接表模板 * */ #include<stdio.h> #include<string.h> int head[100100];//表头,head[i]代表起点是i的边的编号 int cnt;//代表边的编号 struct s { int u;//记录边的起点 int v;//记录边的终点 int w;//记录边的权值 int next;//指向上一条边的编号 }edge[100010]; void add(int u,int v,int w)//向所要连接的表中加入边 { edge[cnt].u=u; edge[cnt].v=v; edge[cnt].w=w; edge[cnt].next=head[u]; head[u]=cnt++; } int main() { int n; while(scanf("%d",&n)!=EOF) { int i; cnt=0; memset(head,-1,sizeof(head));//清空表头数组 for(i=0;i<n;i++) { int u,v,w; scanf("%d%d%d",&u,&v,&w); add(u,v,w); } int u,v,w; scanf("%d",&u); for(i=head[u];i!=-1;i=edge[i].next)//输出所有与起点为u相连的边的终点和权值 { v=edge[i].v; w=edge[i].w; printf("%d %d\n",v,w); } } return 0; }
#include<stdio.h> #include<vector> using namespace std; #define SIZE 1000 vector<int> adj[SIZE]; int n,m; void init() { scanf("%d%d",&n,&m); int i,j; int a,b; for(i=1;i<=n;i++) { adj[i].clear(); //清除 } for(i=1;i<=m;i++) { scanf("%d%d",&a,&b); adj[a].push_back(b); adj[b].push_back(a); } } void print() { int i; int j; for(i=1;i<=n;i++) { printf("dian %d:",i); for(j=0;j<adj[i].size();j++) { printf("%d ",adj[i][j]); } printf("\n"); } } int main() { int t; scanf("%d",&t); while(t--) { init(); print(); } return 0; }
0 0
- 建邻接表的两种方式
- vector实现邻接表的两种方式
- vector实现邻接表的两种方式
- 邻接表的建立-两种方式(模板)
- 邻接表的两种遍历算法
- 邻接表的两种模拟写法
- 邻接表存储有向图的两种遍历方式
- java图的邻接表实现两种方式及实例应用分析
- 邻接表的几种存储方式
- 邻接表的存储方式
- 数据结构邻接表的建立以及两种遍历
- 邻接表的两种模拟写法(模板)
- 邻接表的两种实现(双向+非指针)
- 递归深度优先遍历图(DFS)(邻接表和数组两种方式)
- prim算法构造最小生成树(邻接表和数组两种存储方式实现)
- 图的表示方式----邻接矩阵、邻接表
- 图的存储方式--邻接表法
- 图的两种结构(邻接矩阵、邻接表)DFS、BFS算法
- Mac下使用github的基本步骤
- UIView
- 第一章 导言 Optix 光线跟踪编程指南
- Ubuntu命令行模式和图形界面模式切换
- 设计模式-状态模式
- 建邻接表的两种方式
- 网络通信中的数据链路层常见协议汇总
- Error creating bean with name '****'的解决方法
- jQuery对象与dom对象的转换$("#id")[0]
- UIEdgeInsetsMake 顺序
- Date、TimeStamp和Calendar的使用
- Rhino——java执行多种脚本语言
- Apache与Nginx的优缺点比较
- matlab取整函数