Advertisement

最少翻译问题求解C++

阅读量:

问题描述

据美国动物分类专家欧内斯特-迈尔估算,全球现存的动物种类超过百万种,各类动物均拥有自身的交流方式。因此,在动物A与C之间进行信息传递时,需要借助动物B作为中介。问题在于,两个动物之间实现有效通信至少需要多少个中介者。
测试数据的第一行包括两个整数n(2<= n <= 200)、m(1 <= m <= 300),其中n表示动物的总数,编号从0开始,所有动物的编号范围为0至n-1,m则代表能够相互交流的动物对数量。随后的m行中每行包含两个数字,分别代表可以互相通信的两种动物。接下来是一个整数k(k <= 20),表示查询的数量,每个查询包含两个数字,用于表示希望进行通信的两个动物。
编写程序以处理每个查询,并输出这两个动物之间实现通信所需的最少翻译数量。如果它们无法通过翻译完成通信,则应返回-1。

输入

3 2
0 1
1 2
2
0 0
0 2

小标题

0
1

算法思路解析

本题所描述的问题可理解为,在一个无向图中判断两个节点之间是否存在可达路径,若存在则需计算并返回这两点之间的最短路径长度。所采取的实现方式为利用图的邻接矩阵来构建图结构,并通过图的深度优先遍历算法来查找最短路径。

复制代码
    #include <iostream>  
    #include<cstr

全部评论 (0)

还没有任何评论哟~