还是不对,输出依旧是2不是3,正确输出应该是3才对
时间: 2024-01-02 17:01:50 浏览: 26
非常抱歉,这是我的疏忽。题目中要求的是最多能选择多少种食材,而不是选择的食材个数。因此,我们需要将所有有冲突的食材合并到一个集合中,然后剩余的食材个数即为可选择的食材个数。
以下是修改后的代码:
```python
def find(parents, x):
while parents[x] != x:
x = parents[x]
return x
def union(parents, x, y):
root_x = find(parents, x)
root_y = find(parents, y)
if root_x != root_y:
parents[root_x] = root_y
n, m = map(int, input().split())
parents = [i for i in range(n + 1)]
for i in range(m):
x, y = map(int, input().split())
union(parents, x, y)
conflict_set = set()
for i in range(1, n + 1):
conflict_set.add(find(parents, i))
print(n - len(conflict_set))
```
我们首先按照题目要求,将所有有冲突的食材合并到同一个集合中。然后,遍历所有食材,将它们的根节点添加到一个 `set` 中。最后,用总食材个数减去 `set` 中元素的个数,即为可选择的食材个数。
感谢您的耐心指正!