当前位置: 首页 > news >正文

P1989 三元环计数

三元环计数link

给定 nnn 个点,mmm 条边无向图,求其三元环个数。不保证图联通。n≤105,m≤2×105n \leq 10^5,m \leq 2\times 10^5n105,m2×105

先给每个点记录自己的度数,接着按照度数小向度数大连边,度数相同则按照编号从小往大连边的规则连边,最后我们要求的三元环 <u,v,w><u,v,w><u,v,w>一定满足有 <u,v>,<u,w>,<v,w><u,v>,<u,w>,<v,w><u,v>,<u,w>,<v,w>
直接枚举 uuu,再按边找 vvv,按 vvv 的边找 www,最后若 wwwuuu 相连,则找到。这里我们可以通过在枚举 uuu 时对与其相连的所有点都打上标记的方式来方便 O(1)O(1)O(1) 查找 wwwuuu 的相连情况。
这样就非常巧妙地做完了,时间复杂度 O(mm)O(m \sqrt m)O(mm)
证明如下:
vvv 的度数小于根号,我们知道新图的度数一定不大于原图度数,所以 vvv 的出边的个数最多也小于根号。
vvv 的度数大于等于根号,又因为我们把度数小的边向度数大的边连边,所以从 vvv 出发相连的点度数都大于根号,而这些点最多不会超过根号。
所以最终为 O(mm)O(m \sqrt m)O(mm)

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=2e5+5;
const int M=2e5+5;
int n,m; 
struct node{int v,nxt;
}e[M],e2[M];
int h[M],tot;
int d[N];
int vis[N];
int ox[N],oy[N];
int ans;
void add(int x,int y){e[++tot].nxt=h[x];e[tot].v=y;h[x]=tot;
}
int main(){memset(h,-1,sizeof h);scanf("%d%d",&n,&m);for(int i=1;i<=m;i++){scanf("%d%d",&ox[i],&oy[i]);d[ox[i]]++,d[oy[i]]++;}for(int i=1;i<=m;i++){if(d[ox[i]]==d[oy[i]]){add(min(ox[i],oy[i]),max(ox[i],oy[i]));}else{if(d[ox[i]]<d[oy[i]]) add(ox[i],oy[i]);else add(oy[i],ox[i]);}}for(int u=1;u<=n;u++){for(int i=h[u];~i;i=e[i].nxt){vis[e[i].v]=1;}for(int i=h[u];~i;i=e[i].nxt){int v=e[i].v;for(int j=h[v];~j;j=e[j].nxt){if(vis[e[j].v]==1) ans++;}}for(int i=h[u];~i;i=e[i].nxt){vis[e[i].v]=0;}}printf("%d\n",ans);return 0;
}
http://www.dtcms.com/a/420174.html

相关文章:

  • asp 公司网站建设网站培训班
  • 郴州网站制作公司电话网站下拉广告
  • 营销型网站建设的概念WordPress网站封装app教程
  • 天津建设厅网站导航网站怎么赚钱
  • 做带支付功能的网站网站和软件建站
  • 广西桂林建设局网站手游排行榜
  • 【QT第二章】信号与槽
  • 网站建设站点做网站通过什么赚钱
  • 济宁网站建设是什么意思wordpress头像上传插件
  • 做影视网站什么cms好用吗网站配置域名这样做
  • 【Spring】Spring Boot 自动配置
  • 青浦网站优化前程无忧做网站多少钱
  • 常熟港口建设费申报网站怎么网站建设
  • 文件的读写 二进制形式打开文件
  • 吴忠住房和城乡建设网站成都官网seo技术
  • 惠州建网站服务天津专业网站制作流程优势
  • 北京联通网站备案php 网站模板
  • 清河做网站哪里好齐河网站建设
  • CodeBuddy CLI工具深度测评:从零到一实现鸿蒙游戏开发实践
  • 网站前后台模板服务专业的网站建设服务
  • 资讯网站策划怎么写龙岗公司网站
  • fr后缀网站在线做logo
  • 茶楼 网站免费网站建设域名
  • NeRF+3DGS——提升渲染质量与压缩模型参数
  • Appcelerator打包ipa有哪些优势
  • 五华建设银行网站宁波seo网络推广优化价格
  • 网站目录结构说明上海网络建站模板
  • 佛山网站制作流程推广网站实例
  • 阿里云服务器做网站djangowordpress后台500错误
  • Nginx proxy_pass 末尾斜杠(/)