Luogu P1685 游览/JZOJ #333 神秘岛 (图论-拓扑排序)

本文介绍了如何解决Luogu P1685和JZOJ #333的神秘岛问题,该问题涉及到图论和拓扑排序。通过将桃花岛抽象为无环有向图,求解所有不同路线的总时间。解题策略包括求拓扑序并进行递推计算,详细解题思路和代码实现一同呈现。
摘要由CSDN通过智能技术生成

来源:Luogu P1685,JZOJ #333

题目描述

顺利通过了黄药师的考验,下面就可以尽情游览桃花岛了!

你要从桃花岛的西头开始一直玩到东头,然后在东头的码头离开。可是当你游玩了一次后,发现桃花岛的景色实在是非常的美丽!!!于是你还想乘船从桃花岛东头的码头回到西头,再玩一遍,但是桃花岛有个规矩:你可以游览无数遍,但是每次游玩的路线不能完全一样。

我们把桃花岛抽象成了一个图,共 n n n 个点代表路的相交处, m m m 条边表示路,边是有向的(只能按照边的方向行走),且可能有连接相同两点的边。输入保证这个图没有环,而且从西头到东头至少存在一条路线。两条路线被认为是不同的当且仅当它们所经过的路不完全相同。

你的任务是:把所有不同的路线游览完一共要花多少时间?

解题思路

  • 这是一道较为综合的题,囊括拓扑排序和递推,是一道经典的好题;
  • 首先,求一个拓扑序,存在队列 q q q 中,然后在暴力枚举递推一遍, T o t a l [ i ] Total[i] Total[i] 表示走到第 i i i 个点的方案数, T i m e s [ i ] Time_s[i] Times[i] 表示走到第 i i i 个点花费的时间;
  • 可得两个递推公式
 	Total[y]=(Total[x]
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值