一道关于哈密顿回路的有关问题

一道关于哈密顿回路的问题
问题 I: 逃出密室
时间限制: 2 Sec  内存限制: 128 MB  Special Judge
提交: 508  解决: 22
[提交][状态][讨论版]

题目描述
超哥来到一间密室,忽然一阵阴风把门关上了。魔法学校的门需要魔力才能打开,而超哥没有那间密室的魔力。超哥继续往密室深处走,发现一堆魔法瓶和一些古老的文字。上面写着:欲开启密室,需收集所有瓶中魔力。开启魔法瓶需严格按照顺序,否则将焚毁密室…
文字记载了一个N×N的0,1矩阵GN×N,还记录了任意两个魔法瓶之间的开启规则:
你可以从任意一个魔法瓶开始。
魔法瓶j能在紧随魔法瓶i之后被安全打开,当且仅当Gi,j=1。
魔法瓶j紧随魔法瓶i之后被打开,密室会被焚毁,当且仅当Gi,j=0。
文字最后写道,任意两个魔法瓶,都可以相邻。即:Gi,j⊕Gj,i=1(∀i≠j)
你能帮超哥找到一个开启所有魔法瓶方案吗?

输入
第一行一个整数N,魔法瓶的个数,接着N行,每行N个数,0或1。
第i行第j列为1,表示开启第i个魔法瓶后,下一个开启的魔法瓶可以是j。
保证矩阵 第i行第j列与 第j行第i列数值不同,第i行i列为0。
N≤1000

输出

N个数,空格隔开,表示打开魔法瓶编号顺序。

样例输入

0 0 
1 0
样例输出
2 1
一看肯定是哈密顿回路问题,但是问题中所给边都是有向的,这该怎么做呢??
附题库链接:http://acm.seu.edu.cn/oj/problem.php?id=104
------解决方案--------------------
引用:
Quote: 引用:

>保证矩阵 第i行第j列与 第j行第i列数值不同,第i行i列为0。
说明是tournament graph,tournament graph保证有hamilton path,有直接构造的算法。

       我知道了,本人现在开始搞acm,没有老师,看什么书比较好呢?有的书内容多又难懂,有的书简洁一点但有知识面不全(就像这个竞赛图的定义很多书上都没有),麻烦您稍稍介绍下经验。

没有捷径。多做题,到处看。黑书算是知识点比较多的,但想要全还是只能自己到处多看看。