图的存储

n是节点

完全图:每两个顶点之间都有一条边连接 边数:n(n-1)/2

完全有向图:每两个顶点之间都有两条边连接 边数:n(n-1)

树的边数:(n-1)

连通图:从某个顶点出发,可以到达其余任意顶点

非连通图:从某个顶点出发,至少有一个顶点无法到达

图的邻接表和邻接矩阵的存储模版:

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
#define MAXN 1000+10
bool g1[MAXN][MAXN];//邻接矩阵 
int deg[MAXN];//度数 
vector<int> g2[MAXN];//邻接表 
int main(){
	int n,m;//n:顶点 m:度数 
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		int u,v;
		cin>>u>>v;//一条边的两个顶点 
		deg[u]++;
		deg[v]++;//度数+1 
		g1[u][v]=g1[v][u]=1;//无向图双向建边 
		//邻接表(邻接表插入边) 
		g2[u].push_back(v);
		g2[v].push_back(u);
		//输出邻接矩阵 
		for(int i=1;i<=n;i++){
			for(int j=1;j<=n;j++){
				cout<<g1[i][j]<<" ";
			}
		}cout<<endl;
	}
	//邻接表排序 
	for(int i=1;i<=n;i++){
		sort(g2[i].begin(),g2[i].end());
	}
	//输出邻接表 
	for(int i=1;i<=n;i++){
		cout<<deg[i]<<' ';
		for(int j=0;j<g2[i].size();j++){
			cout<<g2[i][j]<<' ';
		}cout<<endl;
	} 
	return 0;
} 
相关推荐
鱼鱼不愚与1 小时前
《原来如此 | 第01期:为什么导航软件能预测红绿灯倒计时?》
算法
复杂网络6 小时前
论最小 Agent 计算机的形态
算法
kisshyshy21 小时前
🍦 雪糕、食堂、火车厢:三幅漫画吃透栈、队列与链表
javascript·算法
猿人谷1 天前
不只是 CPU 阈值:STAR 如何用 GAT + Transformer 做容器级自动扩缩容?
人工智能·算法
复杂网络1 天前
Stable Diffusion 视觉大模型微调技术深度调研
算法
复杂网络1 天前
基于 Stable Diffusion 架构的视觉大模型代表性工作与原理深度解析
算法
MrZhao4001 天前
Agent Loop 如何用 Hook 扩展:权限、日志与工具拦截
算法
MrZhao4001 天前
Agent 为什么需要 Skills:别把所有知识都塞进 system prompt
算法
JieE2123 天前
LeetCode 101. 对称二叉树|JS 递归 + 迭代双解法,彻底搞懂镜像判断
javascript·算法
JieE2124 天前
LeetCode 56. 合并区间|超清晰 JS 图解思路,面试高频区间题
javascript·算法·面试