关系网络

序言:

老师说会考一道最短路的题我好像听到了
然后看到了最后一题是最短路,然后就没有往这方面想。
所以我来写一下,最短路的t题解和思路。


题目描述:

有 n 个人,他们的编号为 1~n,其中有一些人相互认识,现在 x 想要认识 y,可以通过他所认识的人来认识更多的人(如果 a 认识 b,b 认识 c,那么 a 可以通过 b 来认识 c),求出 x 最少需要通过多少人才能认识 y。

输入格式:

输入格式 第 1 行 3 个整数 n、x、y,2≤n≤100; 接下来的 n 行是一个 n×n 的邻接矩阵, a[i][j]=1 表示 i 认识 j,a[i][j]=0 表示不认识。 保证 i=j 时,a[i][j]=0,并且 a[i][j]=a[j][i]。

输出格式:

输出格式 一行一个整数,表示 x 认识 y 最少需要通过的人数。数据保证 x 一定能认识 y。

样例输入:

5 1 5
0 1 0 0 0
1 0 1 1 0
0 1 0 1 0
0 1 1 0 1
0 0 0 1 0

样例输出:

2

题目分析与思路:

他需要通过多少人才能认识某个其他人。

其实就是他最少需要经过多少个点才能到达终点。

就是一道显而易见的 F l o y d Floyd Floyd,但是我没看出来。。。


代码:

#include <cstdio>
#include <cstring>

const int MAXN = 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值