今天做了经典的食物链,在总结网上其它做法后,小结如下:题意:一共就三种动物,如果A吃B,B吃C==》C吃A; A吃B,A吃C==》B、C为同类A被B吃,A被C吃==》B、C为同类用并查集来做:两种动物之间的关系通过于根节点的相对关系得出,所以关键是路径压缩与合并两个集合时的动物与根节点相对关系的变化,其实也可认为是一个问题,因为路径压缩中的变化其实是合并集合产生的子问题。用delta【i】来表示i和i的父节点的关系,rank[i]=0/1/2分别表示 i 与父亲是同类、被父亲吃、吃父亲。先讲合并操作:设tx为x的父亲,ty是y的父亲,所以delta[x]表示x和tx的关系,delta[y]表示 Read More
posted @ 2011-08-24 14:31 Because Of You Views(1533) Comments(2) Diggs(1) Edit