这道题主要考察图方面的知识,要求求出最短路,那么我们dfs就可以了。
:需要注意题目中 “但是如果他和某个地位较低的人进行了交易,地位较高的的人不会再和他交易,他们认为这样等于是间接接触,反过来也一样” 的意思,所以我们需要设置一个最高等级和一个最低等级进行判断。
上代码!
import sys
sys.setrecursionlimit(1 << 30)
m, n = map(int, input().split())
graph = [[] for _ in range(n+1)]
my_dict = {i: [] for i in range(1, n+1)}
for k in range(1, n+1):
p, l, x = map(int, input().split())
my_dict[k] += [p, l]
for _ in range(x):
t, v = map(int, input().split())
graph[k].append([t, v])
ans = float('inf')
vis = [False for _ in range(n+1)]
vis[1] = True
def dfs(j, money, l1, l2):
global ans
ans = min(money+my_dict[j][0], ans)
for tmp in graph[j]:
if l2-m <= my_dict[tmp[0]][1] <= l1+m and not vis[tmp[0]]:
vis[tmp[0]] = True
dfs(tmp[0], tmp[1]+money, min(l1, my_dict[tmp[0]][1]), max(l2, my_dict[tmp[0]][1]))
vis[tmp[0]] = False
dfs(1, 0, my_dict[1][1], my_dict[1][1])
print(ans)