#435. 邻接表使用
邻接表使用
这一节我们来复习下前面刚学的邻接表的使用。给出一个包含有向图和无向图的混合图 ,图上有 个点和 条边,现在你需要使用邻接表来存储该混合图 并按格式输出邻接表。
在这个题目中,我们已经帮你写好了大部分代码,需要你完成剩下的代码填空。需要填空的地方已经用注释进行了标注。在填空时,你只需要在相应位置填上正确的代码即可。
#include <cstdio>
#include <iostream>
#include <vector>
using namespace std;
const int maxn = 105;
vector<int> G[maxn];
int main () {
freopen("use.in", "r", stdin);
freopen("use.out", "w", stdout);
int n, m, a, x, y;
cin >> n >> m;
for (int i = 0; i < m; i++) {
cin >> a >> x >> y;
if (a == 0) { // 需要在 if-else 结构里添加相应的代码
} else {
}
}
for (int i = 0; i < n; i++) {
cout << i << ":"; // 需要在下面添加一些代码
cout << endl;
}
return 0;
}
输入格式
输入第一行为两个正整数 和 ,表示混合图上的 个点和 条边,两数之间以一个空格分隔。
接下来输入 行,每行输入三个整数 ,,,表示点 和点 之间有一条边。如果 ,则表示该边为有向边,如果 ,则表示该边为无向边,相邻两数之间以一个空格分隔。
输出格式
输出邻接表,输出 行,第 行表示第 个点连接边的情况,首先输出 ,接着输出:
,然后输出所有点 能到达的点的编号,边关系中后出现的点先输出。每个整数前有一个空格,具体格式见样例。
输出时每行末尾的多余空格,不影响答案正确性
要求使用「文件输入输出」的方式解题,输入文件为 use.in
,输出文件为 use.out
样例输入
4 4
0 0 1
1 0 2
0 3 1
1 2 3
样例输出
0: 2 1
1:
2: 3 0
3: 2 1