1461 - 第二届“华为杯”初赛题目F

Time Limit : 1 Second

Memory Limit : 128 MB

Submission: 7

Solved: 1

Description


给定一个单词集合D,能够使用HASH快速判断字符串q 是否在D中。假定我们使用大小为n的哈希表T,表中每一个位置可以存储一个字符串,另使用两个函数 h1 和 h2h1 和 h2都能将任意字符串映射到0到n-1。在向哈希表插入字符串d时,T[h1(d)]为空,置T[h1(d)] = d,否则如果T[h2(d)]为空,置T[h2(d)] = d。如果两个位置都被占据了,则将占据T[h1(d)]的字符串r拿出,置T[h1(d)] = d。然后尝试将r按照上述规则尝试放在另一位置上,即如果T[h2(r)]为空,置T[h2(r)] = r,否则取出T[h2(r)],并置T[h2(r)] = r如果产生了死循环,则取消之前的操作,最开始的字符串d取代T[h2(d)],如果仍会导致死循环,表示需要重新选取HASH函数。


Input


第一行有一个正整数 t ,表示数据组数(不多于50)。每组数据第一行有两个整数, m 和n,1 ≤ m ≤ n ≤ 10000 , m 是需要插入HASH表的字符串个数,n是HASH表的大小。接下来的m行中,每行有两个整数,第i行描述了第i个单词的HASH函数值h1(di)和h2(di)。两个数值可能相等。


Output


每一个测试数据都输出且仅输出一行,如果能将所有字符串插入HASH表,则输出"successful hashing" 。否则输出"rehash necessary"。



sample input
2
3 3
0 1
1 2
2 0
5 6
2 3
3 1
1 2
5 1
2 5
sample output
successful hashing
rehash necessary
hint
source
© 2015 HUST ACMICPC TEAM. All Right Reserved.