现在经常发现原来做过的一些OJ的月赛题,与某些经典题有着很深的渊源...
有向图中,若对于任意点对i和j都有边(i,j)或边(j,i),则该有向图为竞赛图。而竞赛图的哈密顿路一定存在,因此[TOJ]1151最少的重启次数一定是1,[ZOJ]3332中没有impossible的情况。
思路是:任取一点作起点,然后逐个添加其他点。如果要把点x添加到已经连好的部分路径中,那么:
1.对于路径的第一个点a,若有边x->a,就把x加在路径首,如果没有,
2.对于路径的最后一个点b,若有边b->x,就把x加在路径末尾,如果没有
3.在路径a1 ,a2 ...ak 中必能找到一个位置m,同时存在边am ->x和x->am+1 ,插入之!
虽然我的代码效率不高(1151有两个0.00s的!),好歹也是第一次自己写的链表~
我先写的是[ZOJ]3332
Run ID | Submit Time | Judge Status | Problem ID | Language | Run Time(ms) | Run Memory(KB) | User Name |
2170954 | 2010-04-20 20:45:12 | Accepted | 3332 | C++ | 110 | 184 | TJRAC_ACMercy(紫薇) |
发现[TOJ]1151与其类似后,果断修改!
Show Code - Run ID 929267
Submit Time: 2010-07-13 20:51:53 Language: GNU C++ Result: Accepted
Pid: 1151 Time: 0.61 sec. Memory: 2184 K. Code Length: 1.4 K.