參考部落格
洛谷模板
無向圖三元環計數
將無向圖轉化成有向圖,度大的指向度小的,若度一樣,按照編號排序。複雜度 : \(o(n\sqrt n)\)列舉每個點x,將x的所有相鄰點標記,然後列舉x的相鄰點y,再列舉y的相鄰點z,
如果z已經被標記,那麼(x,y,z)就是如圖示的三元環。
#includeusing namespace std;
#define rep(i,a,b) for(int i = a;i <= b;i++)
#define repe(i,u) for(int i = head[u];i;i = e[i].next)
int n, m;
const int n = 1e5 + 10;
const int m = 2e5 + 10;
struct edge e[m];
int head[n], tot;
void addedge(int from, int to) ;
head[from] = tot;
}int deg[n], s[m], t[m];
int vis[n];
int main()
for (int i = 0; i < m; i++)
int ans = 0;
rep(u, 1, n)
}} }
printf("%d\n", ans);
}
三元環計數
也許更好的閱讀體驗 給一張 n 個點,m 條邊的簡單無向圖,求解有多少個三元環 三元環 乙個三元組 left i,j,k right 表示三個點,要求存在邊 left i,j right left i,k right left j,k right 我們先把每個點 i 定義乙個雙關鍵字 left de...
三元環 四元環計數
這東西其實就是一種暴力,只不過巧妙的是每乙個環恰好統計了一次。三元環計數推薦一篇部落格,科技 三元環計數,很詳細,很清楚。每乙個三元環之所以被算了一次,是因為乙個三元環在新圖上必定只有乙個點的出度為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...