为什么py会有一个re点呢?各位大佬求助
  • 板块P2016 战略游戏
  • 楼主ramsol
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/4/13 14:51
  • 上次更新2023/10/23 18:36:36
查看原帖
为什么py会有一个re点呢?各位大佬求助
755432
ramsol楼主2023/4/13 14:51
import collections

n = int(input())
nxs = collections.defaultdict(list)
dp = [[0]*2 for _ in range(n)]
flag = [1] * n
for _ in range(n):
    nums = list(map(int, input().split()))
    p, s = nums[0], nums[1]
    for i in range(s):
        nxs[p].append(nums[i+2])
        flag[nums[i+2]] = 0
def dfs(i):
    global dp
    if i in nxs:
        for j in nxs[i]:
            dfs(j)
            dp[i][0] += dp[j][1]
            dp[i][1] += min(dp[j][0], dp[j][1])
    dp[i][1] += 1



for i in range(n):
    if flag[i] == 1:
        dfs(i)
        print(min(dp[i][1], dp[i][0]))
        break

go没这个问题

func timu4() {
	var n int
	fmt.Scan(&n)
	nxs := make(map[int][]int, n)
	dp := make([][2]int, n)
	flag := make([]int, n)
	for i := 0; i < n; i++ {
		flag[i] = 1
	}
	for i := 0; i < n; i++ {
		var point int
		var length int
		fmt.Scan(&point, &length)
		var a int
		tmp := make([]int, length)
		for j := 0; j < length; j++ {
			fmt.Scan(&a)
			tmp[j] = a
			flag[a] = 0
		}
		nxs[point] = tmp
	}
	var dfs func(int)
	dfs = func(i int) {

		for _, j := range nxs[i] {
			dfs(j)
			dp[i][1] += min(dp[j][0], dp[j][1])
			dp[i][0] += dp[j][1]
		}
		dp[i][1] += 1
	}
	for i := 0; i < n; i++ {
		if flag[i] == 1 {
			dfs(i)
			fmt.Println(min(dp[i][0], dp[i][1]))
			break
		}
	}
}
2023/4/13 14:51
加载中...