题目名称 1072. [ZSTU 2579] 著名医生的药方
输入输出 doctor.in/out
难度等级 ★★
时间限制 1000 ms (1 s)
内存限制 128 MiB
测试数据 8
题目来源 Gravatarcqw 于2012-09-14加入
开放分组 全部用户
提交状态
分类标签
搜索法
分享题解
通过:3, 提交:47, 通过率:6.38%
Gravatar王者自由 100 0.350 s 1.79 MiB C++
Gravatarcqw 100 0.432 s 1.79 MiB Pascal
GravatarTruth.Cirno 100 1.242 s 3.19 MiB C++
GravatarTruth.Cirno 87 11.298 s 3.19 MiB C++
GravatarTruth.Cirno 87 15.804 s 3.18 MiB C++
Gravatardigital-T 75 2.655 s 0.33 MiB C++
Gravatardigital-T 75 3.386 s 0.33 MiB C++
GravatarTruth.Cirno 75 21.223 s 3.19 MiB C++
Gravatarcqw 75 22.509 s 1.28 MiB C++
Gravatarcqw 75 24.402 s 1.28 MiB C++
本题关联比赛
20120914
关于 著名医生的药方 的近10条评论(全部评论)
放弃……我的提前判错最对可以再多对一组……
GravatarTruth.Cirno
2012-09-21 21:27 4楼
Cheat一下,看看其他人代码
GravatarTruth.Cirno
2012-09-21 21:24 3楼
原来是有一步搜索前的查错
GravatarTruth.Cirno
2012-09-21 21:24 2楼
求解
GravatarTruth.Cirno
2012-09-20 21:26 1楼

1072. [ZSTU 2579] 著名医生的药方

★★   输入文件:doctor.in   输出文件:doctor.out   简单对比
时间限制:1 s   内存限制:128 MiB

来源:1) 浙江理工大学 2579     2) 山东理工大学 1402

【问题描述】

很久以前,有一个医术非常高明的医生,曾经医治好了很多怪病。但是,他开出的药方的字迹却是十分难辨认的,只有他自己和他自己的药剂师才能够读懂他的药方。有时候,甚至是两个不同的药方的同一种药都是难以鉴别出的。

不过,这个医生在开药方的时候,习惯有一个固定的标准模式。他有一个药材库,里面共有n种药,除了这n种药,他不会使用任何其他的药。对于每一种药,都有一个关于它的后续药的集合,只有这种药的后续药才能够直接出现在这种药的下一个位置。当然,任何一种药都可能同时是几种药的后续药。

这个医生开出的药方是一个列表的形式。在他的一个药方中,一种药只可能出现一次。更奇怪的是,当他开出一种药和它的后续药以后,这种药的其他后续药就不可能出现在之后的序列中。

后来,一些书法家和医生共同分析了这个医生的大量的药方,写出了他的所有药的清单。这里我们用n整数12,…,n来依次表示他的n种药。同时,他们也分析出了每一种药的可能的后续药的药单。

现在,有一个关于这个医生的药方,药方中写有p种药。可惜的是,药方中有一些药并没有具体辨别出。那么,请你写一个程序,帮忙辨别出药方中不确认的药。当然,对于不确定的药方,可能可以构造出多种不同的药方,那么请你找出所有的情况。

【输入】

输入格式(输入文件名doctorin)

第一行只有一个正整数n(O500),表示所有药的总数。在接下来的n行中,每行有若干个数(中间用空格分开),第i行表示的是第i种药的后续药的集合。

再接下来的一行,又有一个正整数p,表示具体的一个药方的药的数目。继续下来的p行,每行有一个整数,表示这个药方第i药被鉴别出是k;如果k0,表示这个药还没有鉴别出来。

【输出】

输出格式(输出文件名doctorout)

第一行是一个整数m,表示总共可以构造出m种不同的药方。

接下来的m行,每行应该有p个数,具体输出每一种情况的药方,中间用一个空格开。所有的m行的输出,必须按照整数排序顺序输出。行首行末无空格。

【输入输出样例】

输入

5
2 4 5
1 3
5
2 3
1 2 4
4
0
3
0
0

输出

2
2 3 5 4
4 3 5 1