题目描述: 小贝要做一份黑暗料理,现有N(2≤N≤20)种不同的食材供她选择,食材编号从1到N。其中有些食材同时食用会产生副作用,所以产生副作用的食材只能选择其中一种食材或者都不选择。 已知同时食用会产生副作用的食材有M对(0≤M≤N*(N-1)/2),请计算出这份黑暗料理中最多能有多少种食材。 注意:会产生副作用的食材以两个编号表示,两个编号不等且编号小的在前,例如(1,2)和(2,3)。 例如:N=5,M=3时,5种食材编号为1到5,其中有3对食材会产生副作用:(1,2)、(2,3)、(4,5)。 可选择1、3、4号食材或1、3、5号食材做黑暗料理,最多可以有3种食材。 【输入描述】 第一行输入两个正整数N(2≤N≤20)和M(0≤M≤N*(N-1)/2),分别表示食材数量及会产生副作用的食材对数,两个正整数之间以一个空格隔开接下来输入M行,每行两个正整数(1≤正整数≤N),表示会产生副作用的两种食材编号,两个正整数之间以一个空格隔开,两个编号不等且编号小的在前 【输出描述】 输出一个整数,表示这份黑暗料理中最多能有多少种食材 【样例输入】 5 3 1 2 2 3 4 5 样例输出 3
正确答案:参考程序(Python):食材最多且不选冲突对中的两个。n≤20可用DFS/位运算枚举选择集合,检查无冲突对,取最多。样例1,3,4或1,3,5→3。核心:DFS枚举最大独立集。
试卷来源:202305(第14届)蓝桥杯Python编程青少组(国赛)真题