讨论 / What's up???????????????????
coldffire 2012-06-29 07:25:00
点我顶贴 收藏 删除
状态: Unaccepted

测评机: Xeost[5]

得分: 80分

提交日期: 2010-8-25 23:32:00

有效耗时: 391毫秒

测试结果1: 通过本测试点|有效耗时62ms

测试结果2: 通过本测试点|有效耗时47ms

测试结果3: 答案错误|Special Judge:选手输出格式错误,或数字数目与标准输出不符。

测试结果4: 通过本测试点|有效耗时47ms

测试结果5: 答案错误|Special Judge:选手输出格式错误,或数字数目与标准输出不符。

测试结果6: 通过本测试点|有效耗时47ms

测试结果7: 通过本测试点|有效耗时47ms

测试结果8: 通过本测试点|有效耗时47ms

测试结果9: 通过本测试点|有效耗时47ms

测试结果10: 通过本测试点|有效耗时47ms

题目描述

题目背景

话说仙剑奇侠传四故事发生之时,勇气亲眼目睹琼华陨落,又见天河射下琼华,化去天火。着实为之感动。他自叹不如,因而决定归隐园田。

不过他在人间人生地不熟,为了找到一个落脚之地,他找到了同为仙兽的王蓬絮和花楹,两位MM在仔细的讨论商议之后决定——带勇气去蜀山!

经过一番周折,勇气终于在蜀山安家落户,住在原先独孤宇云的房间里(他已经当掌门去了),每天同其他弟子一同修道。

大约 10 年过后,仙盟开始举办一年一度的仙迷聚会,当然要邀请一些仙剑中的著名人物登场,这次就邀请了这三位仙兽。但不想,麻烦就因此开始……

题目叙述

仙盟的邀请函上的地址只写到北京某某某地,蓬絮和花楹哪里知道是什么地方?她们找来了勇气,勇气发觉他三百年之前去过那里,但是因为过了太久,已经记不清楚了。但是两位MM仙兽当然不肯放过这一展露头角的机会,在她们的死磨烂缠之后,勇气终于决定要想办法记起之前这一段回忆。

他把思绪整理了一下,发现过去那一段回忆是有很多情节交织在一起。他把所有的记忆划分成 n 个片断,他把去北京的记忆编号为 1,其他按照 2-n 的顺序依次编号。他发现,很多记忆的回忆之间是存在一先后关系的,比如说,你在回忆使用法术之前必须先回忆清楚什么东西叫法术。当然,同一样片断只需要回忆一次就可以了,比如看书和写字都要求识字,但想要看书和写字只需要回忆一次识字的知识就行了。

于是他把所有的这些关系写成了一张表,现在,他需要找出一种合适的方案来回忆起去北京的过去。你可以帮帮他吗?

数据范围

对于全部的数据,n <= 10。

输入格式

第一行一个数 n,表示有 n 个记忆片断,其中第一段为去北京的记忆。

第二行至第 n + 1 行,表示这 n 个片断的先后次序的表。第 i + 1 行的第一个数字为 c[i],表示在片断 i 被回忆之前必须要回忆过 c[i] 个片断,后面依次列出这 c[i] 个片断的编号,每两个数字间由一个空格隔开。

文件中出现的数字均为正整数,且没有多余的空行和空格。

输出格式

一行,依次输出回忆的顺序,两个数之间由一个空格隔开。行首和行尾不要有多余的空格。如果有多种可能的方案,任意输出一种即可。

如果不存在任何方案,输出“What a poor boy!”。

#include <iostream>

using namespace std;

int n,t[20],b[20],a[20][20],f[20],c=1,x=0;

int main()

{

memset(b,0,sizeof(b));

cin>>n;

for(int i=1;i<=n;i++)

{

cin>>t[i];

for(int j=1;j<=t[i];j++)

cin>>a[i][j];

}

while(true)

{

if(x>20) {cout<<"What a poor boy!";return 0;}

if(c==n+1) break;

for(int i=1;i<=n;i++)

{

if(t[i]==0&&b[i]==0)

{

b[i]=1;

f[c++]=i;

for(int j=1;j<=n;j++)

for(int k=1;k<=t[j];k++)

if(a[j][k]==i)

{

for(int l=k;l<t[j];l++)

a[j][l]=a[j][l+1];

t[j]--;

break;

}

}

}

x++;

}

for(int i=1;i<=n;i++) cout<<f[i]<<' ';

}

#1 fts96@2012-06-29 07:25:00
回复 删除
同LZ错求解……

同LZ错求解……

查看更多回复
提交回复