【程序代码】
/* 利用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;
}
【有向无权图及对应的邻接表示例】
【对应上图输入的测试样例】
注意:第1行代表输入5个点,6条边;其他6行分别代表各条边关联的顶点序号,其中0对应V1,1对应V2,其他以此类推。
5 6
0 1
0 3
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