定義及術語
G(V,E):圖G的頂點集為V,邊集為E。分為有向圖和無向圖兩類。
頂點的度:與該結點相連的邊的條數。
出度:頂點的出邊條數
入度:頂點的入邊條數
頂點的權值稱為點權,邊的權值稱為邊權。
存儲
1.鄰接矩陣
用一個二維數組G[ i ][ j ]實現存儲頂點 i 與頂點 j 之間的關系,可以是存儲兩頂點之間的邊權,也可以僅表示兩頂點之間是否有關系。
它其實是一個對稱矩陣,相當于一個無向圖。
但不適合頂點數目較多的題目。
2.鄰接表
為每個頂點建立一個鄰接表,用來存儲與之有關的出邊的信息,包括邊的頂點與邊的大小。
那么n個頂點就會有n個鄰接表。對于每個鄰接表可以用數組存儲,也可以用鏈表存儲。
此處示范用vector容器存儲
//只存邊的編號情況
int index=3;
vector<int> node[maxn];
node[i].push_back(index);//向編號為i的頂點的鄰接表中加入一個編號為3的頂點
//存邊的編號與大小的情況
struct node{int num;int value;
};
vector<node> v;
void insert(int x,int y){node n;n.num=x;n.value=y;v.push_back(n);
}
//存邊的編號與大小的情況
struct node{//可實現定義的同時初始化int num;int value;node(int n,int v){//構造函數-初始化num=n;value=v;}
};
vector<node> v;
void insert(int x,int y){v.push_back(node(x,y));
}