也許更好的閱讀體驗
給一張\(n\)個點,\(m\)條邊的簡單無向圖,求解有多少個三元環
三元環:乙個三元組\(\left(i,j,k\right)\)表示三個點,要求存在邊\(\left(i,j\right),\left(i,k\right),\left(j,k\right)\)
我們先把每個點\(i\)定義乙個雙關鍵字\(\left(deg_i,id_i\right)\),其中\(deg_i,id_i\)分別表示\(i\)點的度數與編號,這樣每個點就有了嚴格的大小關係
然後我們將這張無向圖轉變為有向圖:把所有的邊\(\left(i,j\right)\)改為由關鍵字大的點向關鍵字小的點連邊,這樣我們就可以得到一張有向無環圖
找環分為三步
這樣做就保證了每個環只會被\(i\)所找到
時間複雜度,最高為\(o\left(m\sqrt\right)\)
如有**講得不是很明白或是有錯誤,歡迎指正如您喜歡的話不妨點個贊收藏一下吧
三元環計數
參考部落格 洛谷模板 無向圖三元環計數 將無向圖轉化成有向圖,度大的指向度小的,若度一樣,按照編號排序。列舉每個點x,將x的所有相鄰點標記,然後列舉x的相鄰點y,再列舉y的相鄰點z,如果z已經被標記,那麼 x,y,z 就是如圖示的三元環。複雜度 o n sqrt n includeusing nam...
三元環 四元環計數
這東西其實就是一種暴力,只不過巧妙的是每乙個環恰好統計了一次。三元環計數推薦一篇部落格,科技 三元環計數,很詳細,很清楚。每乙個三元環之所以被算了一次,是因為乙個三元環在新圖上必定只有乙個點的出度為2,然後我們只在這個點上更新三元環數量。然後我放了個 define fore i,x,y for in...
Hdu 6184 三元環計數
題目描述 給乙個2e5點2e5邊的無向圖,求子圖 的數量。hint 考慮把所有邊定向,從度數小的點往度數大的點連,這樣每個點的出度都小於sqrt 2e5 include using namespace std typedef long long ll const int maxn 200007 in...