【程序代码】
/* 利用STL中的vector实现无向无权图的邻接表表示 */
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5;
vector<int> v[N];
int main() {
int n,m; //n点数,m边数
cin>>n>>m;
int s,t; //边的邻接点序号,从0开始
for(int i=0; i<m; i++) {
cin>>s>>t;
v[s].push_back(t);
v[t].push_back(s);
}
for(int i=0; i<n; i++) {
cout<<"V"<<i+1<<":";
for(int j=0; j<v[i].size(); j++) {
if(j==v[i].size()-1) cout<<v[i][j];
else cout<<v[i][j]<<"->";
}
cout<<endl;
}
return 0;
}
/*
in:
5 6
0 1
3 0
1 2
2 3
1 4
2 4
out:
V1:1->3
V2:0->2->4
V3:1->3->4
V4:0->2
V5:1->2
*/
【无向无权图及对应的邻接表示例】
【对应上图输入的测试样例】
注意:第1行代表输入5个点,6条边;其他6行分别代表各条边关联的顶点序号,其中0对应V1,1对应V2,其他以此类推。
5 6
0 1
3 0
1 2
2 3
1 4
2 4
【运行截图】
【参考文献】
https://blog.csdn.net/wang2332/article/details/75946619
https://blog.csdn.net/chang_mu/article/details/22782829