#808. 文件分包(partfile)
文件分包(partfile)
题目描述:
若干年之后,dd_engi的OI商店的生意越来越红火,他已经在全球开了N家分店,每个分店都有自己独立的服务器。假如说dd_engi找到了很好的货品想要上传至OI商店,他肯定不能一个分店一个分店地上传,因为分店非常多,需要上传的文件往往又非常大。所以说,当前dd_engi面临的最大的问题就是:当想要往店里添加一样新的货品时,如何使每个分店都能尽快的收到这个文件,同时采购员又不用太累。dd_engi采取了这样的方法:将需要上传的文件分割成K个“分包”,然后直接发送给每家分店最多一个分包。每家分店都有各自的管理员,若某个分店管理员收到了一个分包,他会将这个分包发送给他的“支援对象”——也就是一些dd_engi事先指定好的分店,收到这个分包的分店管理员也会如法炮制(也就是发给他的“支援对象”)。dd_engi已经确定了分包的数量和每个分店的“支援对象”,他想知道能不能选择N家分店中的M家分店,只要给这M个分店各发送一个合适的分包,就能确保每家分店都能收到所有的K个分包。如果这K个分包按照上面的方式不管怎样发送都不能确保每家分店都能收到所有的K个分包,就意味着分包的数量太多,要减少为J个才能满足要求。
输入文件(partfile.in):
第一行有两个整数,分别是N和K。
以下的N行,每行有若干个整数。第I+1行表示第I家分店的“支援对象”的编号。每行都以0结束。如果某家分店没有任何支援对象,则相应的行只有一个数字0。
输出文件(partfile.out):
输出只有一个数字。如果存在合适的M满足题意,则输出M的最小取值。如果不存在满足题意的M,则输出J的最大取值。
输入示例(1):
3 2
2 0
1 3 0
2 0
输出示例(1):
2
(注:上面的输入存在满足要求的M,故输出的是M的最小取值2)
输入示例(2):
5 2
2 0
3 0
4 0
5 0
3 0
输出示例(2):
1
(注:上面的输入不存在满足要求的M,故输出的是J的最大取值1)
数据规模:
N<=400,K<N