一下两种方法掌握一种即可
一.前向星建图
/** /*向前星 /*@Victor */ const int MX = 1e5 +5; const int ME = 2e5 + 5; struct edge{ int v ,w ; int nxt; edge(){} edge(int _v, int _w,int _nxt){ v = _v; w = _w; nxt = _nxt; } }E[ME]; int head[MX], tot; void init(){ memset(head , -1;sizeof(head)); tot = 0; } void add_edge(int u ,int v,int w){ E[tot] = edge(v ,w , head[u]); head[u] = tot++; }
二.vector建图
/** /*vector实现向前星 /*@author Victor */ const int MX = 1e5 + 5; struct edge { int v, w , nxt; edge() {} edge(int _v, int _w){ v = _v; w = _w; nxt = _nxt; } }; vector<edge>E[MX]; void init(int n){ for(int i = 0;i <= n; i++){ E[i].clear(); } } void add_edge(int u, int v,int w){ E[u].push_back(edge(v,w)); }