图的存储

该博客主要讨论图的存储方法,通过一个实例展示了如何处理包含重边的图,并提供了处理图查询问题的解决方案。内容涵盖了图的邻接矩阵和邻接表存储方式,以及按输入顺序输出邻接点信息的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述
本题目考察大家图的存储的基本能力(建议大家将两种图的储存方式都试一下),题目将给大家n个点的信息(字符串,长度<=30),再给大家m条边的信息,最后提出k个问题,每个问题都是寻找每个点的邻接点。(注意,该题数据会有重边)
输入
第一行:n,m,k
接下来n行,每行一个字符串,表示每个顶点的信息(字符串长度<=30)
接下来m行,每行两个数字a b,(0<=a,b <n 且a!=b)表示存在一条第a个点指向第b个点的边;
接下来k行,每行一个数字z,表示询问第z顶点所有的邻接点信息;
输出
一共k行,分别对应k个问题的答案:
如果询问的点,没有邻接点,那么输出0;
如果询问的点有多个邻接点,那么按照每个点(注意不是边)的输入顺序,进行输出,每个点的信息用空格隔开。(重复的点一样输出,不要去重)
样例输入
5 7 5
A
B
C
E
F
0 1
1 2
2 4
0 3
4 0
4 1
3 2
0
2
3
4
1
样例输出
B E
F
C
A B
C
提示
20% n<=10 m<=20 k<=n;

50% n<=500 m<=1000 k<=n;

70% n<=3000 m<=6000 k<=n;

100% n<=10000 m<=20000 k<=n;

#include<bits/stdc++.h>
using namespace std;
int n,m,x,y,nex[20010],first[20010],t,a,num,k,s[20010],ans[20010];
char sum
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值