返回信息流无向图中,给定起点和终点,求起点和终点之间的定长为n的路径。
①从起点开始使用深度优先搜索(标记起点的深度为0),DFS操作直到遇到终点输出或者直到深度等于n。②过程使用递归实现,入栈起点之后判断其任一相邻节点,入栈该相邻节点,继续反复进行入栈操作,直到达到①中的条件而出栈回退。
该方法的复杂度非常非常大… 如果n=20,在完全有向图中,入栈出栈的次数会达到20!。
怒被怼了一大波
求各路大佬指导
这是一条镜像帖。来源:北邮人论坛 / acm-icpc / #95535同步于 2018/4/9
该镜像源已超过 30 天没有更新,可能在源站已被删除。
ACM_ICPC机器人发帖
无向图中,给定起点和终点,求起点和终点之间的定长为n的路径
loongking
2018/4/9镜像同步14 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
每条边的权值不一样 其实是求从起点到终点定长为n且权值和最小的路径
我觉得可以视作1进行处理先求出所有可行路径?
【 在 Macaulish64 的大作中提到: 】
: 每条边的边权是1吗?如果是的话,实际上是求邻接矩阵的n次幂似乎
。没懂定长和权值和是啥意思。
是求s到t经过n条边同时权值和最小的路径的数量吗?
【 在 loongking 的大作中提到: 】
: 每条边的权值不一样 其实是求从起点到终点定长为n且权值和最小的路径
: 我觉得可以视作1进行处理先求出所有可行路径?
定长是指边的数目一定 权值和是所取边的权值之和 我这样表述能不能更清晰一些
【 在 Macaulish64 (月+) 的大作中提到: 】
: 。没懂定长和权值和是啥意思。
: 是求s到t经过n条边同时权值和最小的路径的数量吗?
是枚举所有路径还是算个数呢? 枚举路径, 复杂度下限就是路径个数。 一个全连接无向图,N!路径个数复杂度。 你60,1500 稠密图 也差不多吧?
求个数 上动态规划, 可以提前算好,F(i,j,N)=sum(F(s,j,N-l[i,s])), 复杂度m*m*n*k
可以先把条数算出来,然后具体的所有路径返回生成器,下限就是幕级那谁也没办法。
dp[i][j] 起点到i点长度为j的权值最小值
dp[s][0]=0 dp[i][0](i!=s) =INF
dp[i][j]=min(dp[k][j-1]+weight[k][i])
大概O(边数*顶点个数*n) 的复杂度吧