#435. 邻接表使用

邻接表使用

这一节我们来复习下前面刚学的邻接表的使用。给出一个包含有向图和无向图的混合图 GG,图上有 nn 个点和 mm 条边,现在你需要使用邻接表来存储该混合图 GG 并按格式输出邻接表。

在这个题目中,我们已经帮你写好了大部分代码,需要你完成剩下的代码填空。需要填空的地方已经用注释进行了标注。在填空时,你只需要在相应位置填上正确的代码即可。

#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;
}

输入格式

输入第一行为两个正整数 nnm1n,m100m(1≤n,m≤100),表示混合图上的 nn 个点和 mm 条边,两数之间以一个空格分隔。

接下来输入 mm 行,每行输入三个整数 aaxxy0a10x,y<ny(0≤a≤1,0≤x,y<n),表示点 xx 和点 yy 之间有一条边。如果 a=0a=0,则表示该边为有向边,如果 a=1a=1,则表示该边为无向边,相邻两数之间以一个空格分隔。

输出格式

输出邻接表,输出 nn 行,第 ii 行表示第 ii 个点连接边的情况,首先输出 ii,接着输出:,然后输出所有点 ii 能到达的点的编号,边关系中后出现的点先输出。每个整数前有一个空格,具体格式见样例。

输出时每行末尾的多余空格,不影响答案正确性

要求使用「文件输入输出」的方式解题,输入文件为 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