题目大意
http://poj.org/problem?id=1703
某个城市的罪犯分成两个帮派,给出一系列某两个罪犯是否是同一个帮派的信息,让你去推断某两个人是否是同一帮派。
题目分析
直接解感觉没思路,但是如果转换一下将每个罪犯属于帮派A,属于帮派B都作为数组的元素记录下来,那么
当两个罪犯a和b属于相同帮派时,就讲a-A,b-A归在一起,将a-B,b-B归在一起。
当两个罪犯a和b属于不同帮派时,就将a-B,b-A归在一起,将a-A,b-B归在一起。
因此分析下来,有N个罪犯数组元素个数就是2N个,很自然的就用*并查集解就行了,注意最后判断如果罪犯a,b所对应的数组值相等则是同一个帮派,如果a跟b+N所对应的数组值相等,就不是一个帮派,否则的话就是不能确定。
这个题如果拓展成3个帮派也是可以的,那么数组至少要有3*N元素,道理是一样的,只是判断稍微复杂一点。
代码
|
|
时间复杂度待分析