首页 > 其他分享 >三(四)元环

三(四)元环

时间:2023-09-03 11:00:50浏览次数:27  
标签:度数 元环 int rd 枚举 emplace id

模拟赛考了这个东西,被创死了

其实总结下来就一个东西,如果我们给边定向,让度数小的向度数大的连,那所有点的出度不会超过\(\sqrt{m}\)

根号分治,如果本身的度数小于\(\sqrt{m}\),则明显合法,若大于了,则最多只有\(\sqrt{m}\) 个点的度数大于了当前点

一个三元环可以被拆成 \(A\rightarrow B\),\(A \rightarrow C\),$ B \rightarrow C$,那不妨枚举一个点周围所有的点,然后再枚举周围的点周围的点,如果被染色了,就可知有三元环存在

四元环就大同小异了,一个四元环定向之后的形态就两种

我们考虑在入度最多的点处统计答案,固定其对面的点,枚举其在原图上的边,再在这个点上枚举其定向边,加进答案统计就可以了

但这样会统计出事,因为对于第一张图,你从两边的点开始,也能统计出整个环,所以要求当起点的度数小于终点的度数时才能统计

signed main(){
	ios::sync_with_stdio(false);
	cin.tie(0),cout.tie(0);
	n=rd(),k=rd(),m=rd();
	fp(i,1,m){
		int x=rd(),y=rd()+n;
		g[x].emplace_back(y),
		g[y].emplace_back(x);
		deg[x]++,deg[y]++;
	}
	iota(id+1,id+n+k+1,1);
	sort(id+1,id+n+k+1,[](int x,int y){
		return deg[x]<deg[y];
	});
	n+=k; 
	fp(i,1,n) rk[id[i]]=i;
	fp(i,1,n)
		for(int x:g[i])
			if(rk[x]>=rk[i])
				ng[i].emplace_back(x);
	ll ans=0;
	fp(i,1,n){
		for(int x:g[i])
			for(int y:ng[x])
				if(rk[i]<rk[y])
					ans+=ts[y]++;
		for(int x:g[i])
			for(int y:ng[x])
				ts[y]=0;
	}
	cout << ans << endl;
	return 0;
}

代码不是标准模板,仅供参考,慎重查看

标签:度数,元环,int,rd,枚举,emplace,id
From: https://www.cnblogs.com/Benzenesir/p/17674735.html

相关文章

  • 三元环
    无向图三元环给定一张无重边、无自环的无向图点数为\(n\),边数为\(m\),其中\(n,m\)同阶求有多少个无序三元组\((i,j,k)\)满足:有一条连接\(i,j\)的边有一条连接\(j,k\)的边有一条连接\(i,j\)的边首先考虑暴力,枚举所有三元组判断是否满足条件,时间复杂......
  • 2017ACM/ICPC广西邀请赛-重现赛(感谢广西大学)C - Counting Stars 暴力三元环
    LittleAisanastronomylover,andhehasfoundthattheskywassobeautiful!Soheiscountingstarsnow!Therearenstarsinthesky,andlittleAhasconnectedthembymnon-directionaledges.Itisguranteedthatnoedgesconnectonestarwithi......
  • 三元环计数
    题目:    这道题目比较简单,由于数据量比较小我们用邻接矩阵来存图,方便查找两点间是否有连接i,j,k三重循环暴力枚举,因为会有重复情况所以我们要保证i<j<k故代码为:#include<bits/stdc++.h>#defineioios::sync_with_stdio(false),cin.tie(0),cout.tie(0)usingnamespa......
  • P1989 无向图三元环计数
    P1989无向图三元环计数-洛谷|计算机科学教育新生态(luogu.com.cn)属于是只有大文学家能写出来,我只能抄在积累本上的那种。考虑给每个点赋权\(a_u\),权值两两不同,然......
  • 三(四)元环计数
    无向图三元环计数将边定向,度数少的点连向度数多的点,度数相同时编号小的连向编号大的。这样保证一个点它的出度不会超过$O(\sqrt{m})$(因为原本度数大于$\sqrt{m}$......
  • 三元环计数
    \(\mathcalLink\)枚举一条边\((u,v)\),选择度数较小的点\(v\)暴力扫所有出边即可。一次复杂度\(\mathcalO(out_v)\)可能需要一个Hash。这样做复杂度为\(\mathca......
  • C - Friend-Graph HDU - 6152 三元环 & 拉姆齐定理
    原题链接题意:判断图和补图是否含有三元环拉姆齐定理拉姆齐定理:在>=6个点的完全图中,用红蓝两色染色,一定存在一个红色或者蓝色的三角形。所有n>=6的话直接输出badte......
  • 求原图与其补图的三元环个数
    原文:https://www.cnblogs.com/NicoDafaGood/p/7552893.html题意给一个n个点,m条边的无向图,求该图与其补图的三元环个数.(n<=1e5,m<=1e5,保证没有自环)思路首先考虑一......
  • 无向图三元环 查找/计数
    理解时间复杂度\(O(M\sqrt{M})\)作用求出无向图的所有三元环过程首先要对所有的无向边进行定向,对于任何一条边,从度数大的点连向度数小的点,如果度数相同,从编号小的点......