結構體儲存
1struct
edge
2edge[maxn];
5int
head[maxn];
6void addedge(int x,int y,int
val)
7
呼叫
1void use(int
x)7 }
vector儲存
1 #include 2 #include 3struct
edge8};
9 vector g[maxn];
10void add(int x,int y,int
z)
呼叫
1void use(int
x)7 }
陣列模擬
1const
int maxn = 1e5+10;2
const
int maxr = 2e5+10;3
int index = 1
, to[maxn], w[maxn], pre[maxn], p1[maxn];4//
插入5intx, y, z;
6for(int i = 0; i < n; ++i)
1011
//遍歷
12for(int i = p[v]; i; i =pre[i])
例題:一般與搜尋一起用
南洋理工 --吝嗇的國度
vector(動態陣列) 好用
上**
1 #include 2 #include3 #include 4 #include 5
using
namespace
std;
6const
int maxn = 1e5+10
;7 vectorv[maxn];
8int
a[maxn];
9void dfs(int
x)13}14
intmain()
26dfs(m);
27 a[m]=-1;28
for(int i = 1; i <= n; i++)
32 cout<33 memset(v,0,sizeof
(v));
34 memset(a,0,sizeof
(a));35}
36return0;
37 }
hdu 2586 :
1 #include 2 #include3 #include 4 #include 5
using
namespace
std;
6const
int maxn = 1e5+10
;7 vectorv[maxn];
8 vectorvn[maxn];
9int
a[maxn];
10int dfs(int x, int y, int
sum)
14else
if(!a[v[x][i]])
15 a[v[x][i]] = 1, dfs(v[x][i], y, sum+vn[x][i]);16}
17}18int
main()
36for(int i = 0; i < y; i++)
42 flag = 1;43
}44return0;
45 }
只有不斷學習才能進步!
鄰接矩陣與鄰接表
鄰接矩陣表示圖 public class graph private int vertexnum private int edgenum private int g 鄰接矩陣 public graph int vertexnum public void insertedge edge edge pu...
鍊錶與鄰接表
對於稀疏圖來說,m要遠遠小於n21 2 3 4 5 6 4 5 1 4 9 4 3 8 1 2 5 2 4 6 1 3 7 第一行兩個整數n m。n表示頂點個數 頂點編號為1 n m表示邊的條數。接下來m行表示,每行有3個數x y z,表示頂點x到頂點y的邊的權值為z。下圖就是一種使用鍊錶來實現鄰接...
鍊錶與鄰接表
鍊錶 陣列是一種支援隨機訪問,但不支援在任意位置插入或刪除元素的資料結構。與之相對應,鍊錶支援在任意位置插入或刪除,但只能按順序依次訪問其中的元素。我們可以用乙個struct 表示鍊錶節點,其中可以儲存任意資料 另外用prev和next兩個指標指向前後相鄰的兩個節點,構成乙個常見的雙向鍊錶結構。為了...