数据结构

数据结构
//完全二叉树
n==n0+n1+n2;
n0==n2+1;
n1==0||1; 
边的数量s=n-1=n1+2*n2
//并查集
int father[maxn+1];
for(int i=1;i<=n;i++)father[i]=i;
int find_root(int x){
     
    int i=x;
    while(x!=father[x])x=father[x];
    while(i!=father[i]){
     
        int temp=i;
        i=father[i];
        father[temp]=x;
    }
    return x;
}
void Union(int a,int b){
     
    int A=find_root(a),B=find_root(b);
    if(A!=B)father[A]=B;
}
//邻接矩阵
const int maxv=1e3;//点数
bool G[maxv][maxv];//vi与vj之间是否存在边
int G[maxv][maxv];//vi与vj的边权
//邻接表
const int maxv=1e5;//点数
vector<int> Adj[maxv];
Adj[i].push_back(j);//vi与vj之间联通
struct node{
     int vertex,weight;};
vector<node> Adj[maxv];
A[i].push_back(node{
     j,w});//vi与vj联通边权为w

你可能感兴趣的:(数据结构)