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; }