一.题目

分析:只要是能传送过去并且传送次数不为0,就算可以到达,所以这里不能用dfs来,很明显的bfs算法,分层遍历,每一层会消耗一次传送次数,但是本题的数据过大,如果使用邻接矩阵来作为visited数组那么时间复杂度过高,只能通过部分测试用例
1.使用邻接矩阵遍历传送阵时间复杂度为O(n),假如有50万个星球,那么就需要遍历50万次
2.使用邻接表寻找传送阵时间复杂度为O(1)
二.代码
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
import java.util.Scanner;
//1:无需package
//2: 类名必须Main, 不可修改
public class Main {
public static double res;
static class pair{
int x;//当前星球
int y;//剩余传送次数
public pair(int x,int y)
{
this.x = x;
this.y = y;
}
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();//n个星球
int m = scan.nextInt();//m个双向传送门
int q = scan.nextInt();

最低0.47元/天 解锁文章
744

被折叠的 条评论
为什么被折叠?



