异或哈希.

异或哈希的底层原理是两个相同的东西哈希值一定相等

Description:

小 B 是一个辛勤的农民,他家里种了一棵很大的苹果树。 这棵苹果树可以看作一张 n 个点 n-1 条边的无向连通图,小 B 觉得这颗苹果树很脆弱,因为只要剪断任意一条边,苹果树就不连通了,于是他给苹果树新加了m 条边。现在这颗苹果树就不像是一棵树了,成了一张 n 个点 n+m-1 条边的无向连通图,小Q是小 B 的好朋友,他觉得这棵树依然很脆弱,他告诉小 B,自己只要破坏两条边,一条是原树中的边,一条是小 B 新加的边,就能使苹果树不连通。 小 B 觉得小 Q 说得很不可思议,于是他找来了擅长编程的你,希望你告诉他,按照小B 的破坏规则,有多少种不同的方案使得苹果树不连通。 注意:两种方案不同当且仅当一条边在第一种方案中被删除了但在第二种方案中没有被删除。

Input 第一行两个正整数 n,m,表示苹果树的点数和后面新加的边的个数。接下来 n-1 行,每行两个正整数 u,v,表示(u,v)之间有一条树边。接下来 m 行,每行两个正整数 u,v,表示(u,v)之间有一条小 B 新加的边。

Output 输出一行一个整数,表示有多少种不同的方案。

Examples:

【样例输入输出 1】

tree.in:  4 1 1 2 2 3 1 4 3 4

tree.out: 3

 对于这道题,可以把新加的边给一个随机权值(这条边两个点的随机值一样,并且不用真正的连边add),因为之前的树一切就断,一

你可能感兴趣的:(算法,哈希算法,算法,数据结构)