【发布时间】:2022-01-16 03:51:48
【问题描述】:
给你一个整数 n,它是图中节点的数量。边的权重为:
- u->v = 1 if (u 可被 v 整除或 v 可被 u 整除) 之间的边权重
- v->u = n+1 if(u 不能被 v 整除) 之间的边权重
给你 q 个查询,我们需要找到它们之间的最短距离。
我尝试了这个问题,但我面临的唯一问题是我应该如何使用给定条件构造加权图,因为 N
这里是一个更好解释的例子
N=6 Q=2 {(1,3),(3,4)}
这是图表的样子
U -> V = weight
1->2=7
1->3=7
1->4=7
1->5=7
1->6=7
2->4=1
2->6=1
3->6=1
所以查询的答案是
for (1->3) = 7
for (3->4) = 3->6->2->4 = 3
【问题讨论】:
-
为什么 1->2 的权重是 7? 2 能被 1 整除吗?
-
“我想如何构建加权图” - 你不应该这样做。有人以图形问题的名义来装点数学问题,希望诱骗人们浪费时间尝试构建图形。
-
您的设置不一致。根据第一条规则,边
6->2的权重为 1,因为 6 可被 2 整除。根据第二条规则,边6->2的权重为 n+1,因为 2 不能被 6 整除。除非两者兼有n 为零。 -
我的意思是,答案看起来像 1 或 2。但规格不一致,因此可能是 1 或 n+1。您似乎对问题的理解不足以描述它。
标签: c++ graph-theory depth-first-search shortest-path