題意是 如果2個人是朋友 則他們朋友的朋友也是他們的朋友 這樣就組成了一圈朋友 他們就有很多朋友了 輸入 2個人的名字 為2個字串
表示2個人是朋友 並且在同時輸出他們的朋友圈有多大 注意 人數最多為100000 很多哦
顯然不能用 暴力去給字串分配編號 太大了人 那樣肯定超時
就必須要用字典樹了
#include#include#include#includestruct haha
;struct haha *root;
struct haha *build()
int cs,parent[200010],rank[200010];
int getnum(char *t)
else p=p->next[u];
} if(p->cnt==0) p->cnt=++cs;//走到串對應的終點了 這時候在串的末尾對應的節點上給其編號
return p->cnt; //分配的編號
}int find(int x)
void del(struct haha *p)
free(p);
p = null;
}int main()
root=build();
for(i=1;i<=n;i++)
printf("%d\n",rank[n1]);
}del(root);//刪除整棵樹 每次都要刪除整棵樹 否則會錯
} }return 0;
}
POJ 2513(字典樹 尤拉路 並查集)
本題題意是給一堆木棒,每種木棒左右兩端有兩種顏色,木棒進行拼接的時候,只有相同顏色之間才可以拼接,問最後是否可以將所有木棒拼為一根木棒。我們考慮把同一種顏色的點聚在一起,我們就可以得到乙個無向圖,如果這個無向圖是尤拉圖,代表展開之後可以一筆走完,也就是可以連線成一條木棒。所以我們用trie樹判斷每種...
hdu 1251 字典樹入門
ignatius最近遇到乙個難題,老師交給他很多單詞 只有小寫字母組成,不會有重複的單詞出現 現在老師要他統計出以某個字串為字首的單詞數量 單詞本身也是自己的字首 input 輸入資料的第一部分是一張單詞表,每行乙個單詞,單詞的長度不超過10,它們代表的是老師交給ignatius統計的單詞,乙個空行...
HDU1251字典樹模板
problem description ignatius最近遇到乙個難題,老師交給他很多單詞 只有小寫字母組成,不會有重複的單詞出現 現在老師要他統計出以某個字串為字首的單詞數量 單詞本身也是自己的字首 input 輸入資料的第一部分是一張單詞表,每行乙個單詞,單詞的長度不超過10,它們代表的是老師...