4264 小C找朋友(hash)

2021-08-26 23:00:45 字數 2263 閱讀 3850

幼兒園裡有

n n

個小c' role="presentation" style="position: relative;">c

c,兩個小

c c

之間可能是朋友也可能不是。所有小

c' role="presentation" style="position: relative;">c

c之間的朋友關係構成了乙個無向圖,這個無向圖中有

m m

條邊。園長atm發現對於兩個(不同的)小ci

' role="presentation" style="position: relative;">cic

i和cj

c

j,如果其他的所有小

c c

要麼同時是

i' role="presentation" style="position: relative;">ii,

j j

的朋友,要麼同時不是

i' role="presentation" style="position: relative;">ii,

j j

朋友的話,這兩個小

c' role="presentation" style="position: relative;">c

c就很有可能一起去吃飯,成為一對好**。出於一些未知的原因,atm需要你幫他求出可能成為好**的小c的對數。

第一行乙個數

n n

,m' role="presentation" style="position: relative;">m

m,如題目描述。

接下來m

m

行,每行2個數表示一條無向邊。

輸出可能成為好**的小

c' role="presentation" style="position: relative;">c

c的對數。

3 3

1 22 3

1 3

3
n,

m≤1000000

n ,m

≤1000000

' role="presentation" style="position: relative;">

' role="presentation" style="position: relative;">

' role="presentation" style="position: relative;">

' role="presentation" style="position: relative;">

' role="presentation" style="position: relative;">

' role="presentation" style="position: relative;">

' role="presentation" style="position: relative;">

一道很簡單的題目。如何快速判斷連邊相等?自然而然想到了hash。把乙個點連向的邊全部異或起來存在這個點裡,然後朋友一樣的點的值相同。但是他們兩個如果是朋友的話這個值就不一樣了。於是我們再異或一下自己再做一遍。

但是這樣容易衝突。我們給每個點rand乙個lo

nglo

ng' role="presentation" style="position: relative;">lon

glon

glon

glon

g權值,再那麼做就好啦。(開個map存一下)

code:

#include

#include

#include

#include

#include

using

namespace

std;

unsigned

long

long r[1000005];

unsigned

long

long p[1000005];

maplong

long,int> d;

int n,m,x,y;

long

long ans;

int main()

d.clear();

for(int i=1;i<=n;i++) p[i]^=r[i];

for(int i=1;i<=n;i++)

printf("%lld",ans);

}

4264 小C找朋友 hash

這道題目一眼就hash啊 但是我還是沒做出來,因為我的hash方法太過 了,直接用乙個二進位制表示每個人的朋友集合 正解的hash方法其實也接觸過,但是我沒用過太多,記錄一下 給每個人隨機乙個很大的權值,乙個人朋友集合的表示方法就是把它的朋友的權值異或起來。include using namespa...

BZOJ4264 小C找朋友

description 幼兒園裡有n個小c,兩個小c之間可能是朋友也可能不是。所有小c之間的朋友關係構成了乙個無向圖,這個無向圖中有m條邊。園長atm發現對於兩個 不同的 小ci和j,如果其他的所有小c要麼同時是i,j的朋友,要麼同時不是i,j朋友的話,這兩個小c就很有可能一起去吃飯,成為一對好友。...

bzoj4264 小C找朋友

怎麼說呢,這應該算是一種新知識吧,圖上hash。具體做法就是每個點都附上乙個初值,然後把每個點所連的點的值 合 起來,然後就可以判斷相連的點是否一樣了 不包括自己 如果要讓自己也在的話,再 合 上自己就好了。關於怎麼 合 有多種方法,感覺一般採用二進位制運算,因為不用考慮順序呀。好像異或的正確率比較...