求助:Tarjan+DP TLE了三个点

P1073 [NOIP2009 提高组] 最优贸易

@[岚默笙](/user/365236) 我也是TLE3个点,#4#5#6,调了一天了/kk求救... 第一次遇到遍历DAG死循环的情况..
by wisdom_grass @ 2020-11-05 19:54:01


你试试dfs的时候如果一个点被遍历多次就退出
by stargre @ 2020-11-05 20:33:13


@[stargre](/user/48023) 前几天已经调出来了 dfs的时候不记录f而用一个数组标记走过的点 不重复走 就不会t了
by 岚默笙 @ 2020-11-06 07:02:28


找到问题了。 ![png](https://cdn.luogu.com.cn/upload/image_hosting/ldeka5i1.png?x-oss-process=image/resize,m_lfit,h_170,w_225) 比如上面这张图片。从1号点开始遍历,第二列的每一个点将遍历到第四列的每一个点。那么假设第二列有49999个点,第四列有49999个点,则遍历的点大致有50000^2个。会超时。 解决办法是建反图从N号点开始遍历,建立vis数组判断一个点是否有遍历过。如果遍历过就不必再往下遍历——接下来的点肯定被遍历过了,肯定都能从N号点到达。 (图片忘记画方向了,脑补一下qwq)
by wisdom_grass @ 2020-11-06 21:51:29


@[岚默笙](/user/365236) qwq
by wisdom_grass @ 2020-11-07 08:32:29


|