STL-vector之邻接表的建立
利用vector建立邻接表
1. 对于无权图:
1 #include<algorithm> 2 #include <iostream> 3 #include <cstdlib> 4 #include <cstring> 5 #include <string> 6 #include <cstdio> 7 #include <vector> 8 #include <queue> 9 #include <cmath> 10 using namespace std; 11 const int MAXM = 200000 + 10; 12 13 int n, m; 14 vector<int> p[MAXM]; 15 16 inline void add(int u, int v) { 17 p[u].push_back(v); 18 p[v].push_back(u); // 有向图删掉本行 19 } 20 21 int main() { 22 cin >> n >> m; 23 for(int i=1; i<=m; ++i) { 24 int x, y; 25 scanf("%d%d", &x, &y); 26 add(x, y); 27 } 28 return 0; 29 }
2. 对于有权图:
1 #include<algorithm> 2 #include <iostream> 3 #include <cstdlib> 4 #include <cstring> 5 #include <string> 6 #include <cstdio> 7 #include <vector> 8 #include <queue> 9 #include <cmath> 10 using namespace std; 11 const int MAXM = 200000 + 10; 12 13 struct Edge { int to, val; }; 14 15 int n, m; 16 vector<Edge> p[MAXM]; 17 18 inline void add(int u, int v, int w) { 19 Edge temp; 20 temp.to = v; 21 temp.val = w; 22 p[u].push_back(temp); 23 temp.to = u; // 有向图删掉以下两行 24 p[v].push_back(temp); 25 } 26 27 int main() { 28 cin >> n >> m; 29 for(int i=1; i<=m; ++i) { 30 int x, y, w; 31 scanf("%d%d%d", &x, &y, &w); 32 add(x, y, w); 33 } 34 return 0; 35 }
posted on 2018-10-30 10:12 Marginalin 阅读(340) 评论(0) 编辑 收藏 举报