2003年突发的非典型肺炎(SARS)是一种病源还不完全了解的新型传染病,需要隔离所有疑似病例。在N大学,有许多学生团体,一个学生可以加入多个团体,同一个学生团体内部成员被认为是经常接触的。N大学为了应付SARS,规定若一个学生被认为是疑似病例,则他所在团体的所有学生都被认为是疑似病例。现在需要你编写一个程序,在发现一个学生是疑似病例后,找到所有与之直接或间接接触过的疑似病例。可以设每一名学生用数字0到n-1编号,输入有学生总数n,学生团体数k,每个学生团体的人数和成员的编号,可能是SARS疑似病例的学生编号,输出所有找到的疑似病例学生编号。例如,
输入数据如下:
1004 //100名学生,4个学生团体;
2 1 2 //第一个学生团体有2人,是编号1和2的两位学生,以下三个团体类似;
5 10 13 11 12 14
2 0 1
2 99 2
0 //现在发现编号0的学生是疑似病例。
这时应输出如下:
4,0,1,2,99表示发现有4位疑似病例,是编号是0,1,2,99的
尽量多注释每个步骤,我是个菜鸟。
求解整个算法
你只要思路?可以使用图结构,邻接表存储方式。把数据处理好以后,一旦输出某个编号,然后找到对应编号,对图进行深度搜索。可以使用深度优先,广度优先也可以。
不知道你这是用于什么的,要说出具体来源才好针对性根据要求写代码或提供更多思路。
----------------------------------------------------------------------------------------------------------------------------------
************************二次回答***********************************************
楼主也不追问一下,你追问了,回答的才知道是否还有回答的必要。
下面的程序大致能实现,但是还是不清楚你程序的用途,比如是什么自测平台的话还得看输入输出格式,其它的话还得增加对错误的判断,比如内存申请失败,内存是否多余等等。
程序见附件。