题目链接:点击查看

题目大意:给出一个 nnn 个点 mmm 条边组成的无向图,求三元环的个数

题目分析:对于原图建新图,对于原来的每条边来说

  1. 如果度数不同,度数小的点指向度数大的点
  2. 如果度数相同,编号小的点指向编号大的点

得到的是一个有向无环图,也就是DAG,然后直接暴力就可以了,可以证明时间复杂度是 O(mm)O(m\sqrt {m})O(mm​) 的

代码:

// #pragma GCC optimize(2)
// #pragma GCC optimize("Ofast","inline","-ffast-math")
// #pragma GCC target("avx,sse2,sse3,sse4,mmx")
#include<iostream>
#include<cstdio>
#include<string>
#include<ctime>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<stack>
#include<climits>
#include<queue>
#include<map>
#include<set>
#include<sstream>
#include<cassert>
#include<bitset>
#include<unordered_map>
#define lowbit(x) x&-x
using namespace std;
typedef long long LL;
typedef unsigned long long ull;
template<typename T>
inline void read(T &x)
{T f=1;x=0;char ch=getchar();while(0==isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}while(0!=isdigit(ch)) x=(x<<1)+(x<<3)+ch-'0',ch=getchar();x*=f;
}
template<typename T>
inline void write(T x)
{if(x<0){x=~(x-1);putchar('-');}if(x>9)write(x/10);putchar(x%10+'0');
}
const int inf=0x3f3f3f3f;
const int N=2e5+100;
vector<int>node[N];
int du[N],x[N],y[N],vis[N];
int main()
{#ifndef ONLINE_JUDGE
//  freopen("data.in.txt","r",stdin);
//  freopen("data.out.txt","w",stdout);
#endif
//  ios::sync_with_stdio(false);int n,m;read(n),read(m);for(int i=1;i<=m;i++) {read(x[i]),read(y[i]);du[x[i]]++,du[y[i]]++;}for(int i=1;i<=m;i++) {int u=x[i],v=y[i];if(du[u]>du[v]) {swap(u,v);} else if(du[u]==du[v]&&u>v) {swap(u,v);}node[u].push_back(v);}int ans=0;for(int u=1;u<=n;u++) {for(auto v:node[u]) {vis[v]=u;}for(auto v:node[u]) {for(auto w:node[v]) {if(vis[w]==u) {ans++;}}}}write(ans);return 0;
}

洛谷 - P1989 无向图三元环计数(思维建图)相关推荐

  1. P1989 无向图三元环计数 思维 + 建图

    传送门 文章目录 题意: 思路: 题意: 统计无向图中三元环的个数. 思路: 很明显有一种暴力的方法,就是枚举每条边,让后再跑两个点的所有边,可以卡到复杂度O(m2)O(m^2)O(m2). 我们可以 ...

  2. 洛谷 P2071 座位安排 (最大流 + 建图)

    2020.7.15 今天先开个小差,这图书馆接近零下的气温给爷冻傻了,这还咋写题?马上回去了,练一练网络和tarjan吧. 这道题很简单,问有2n个人,n排座位,每个人都有喜欢的两个座位,最多能安置多 ...

  3. 三元环计数四元环计数

    三元环计数 问题 给出一张n个点m条边的无向图,问图中有多少个三元组{ u , v , w } ,满足图中存在 { (u,v) , (v,w) , (w,u) } 三条边. 求解 Step1 定向 将 ...

  4. 牛客挑战赛51 E NIT的gcd(欧拉反演,建图优化,三元环计数)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Problem 给你一个正整数 nnn. 请你输出 ∑i=1n∑j=1n∑k=1ngcd⁡(i,j)g ...

  5. P4619 [SDOI2018]旧试题(莫比乌斯反演,建图优化三重枚举,三元环计数,神仙好题,超级清晰易懂)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 P4619 [SDOI2018]旧试题(莫比乌斯反演,三元环计数) Problem 计算: ∑i=1A ...

  6. 男生和女生(思维建图,最大独立集问题)

    男生和女生(思维建图,最大独立集问题) 问题描述 在大学二年级,一些人开始了同学之间罗曼蒂克关系的研究.有"罗曼蒂克"关系是针对男生和女生之间的关系而言的.研究的原因是找到满足以下 ...

  7. HDU6184【Counting Stars】(三元环计数)

    题面 传送门 给出一张无向图,求 \(4\) 个点构成两个有公共边的三元环的方案数. 题解 orz余奶奶,orz zzk 首先,如果我们知道经过每条边的三元环个数\(cnt_i\),那么答案就是\(\ ...

  8. 基站建设(三元环计数+根号分治 / bitset)

    基站建设 problem solution code problem 给定 nnn 个地点,以及每个地点的可靠度 RiR_iRi​. 有 mmm 条光纤架,每一条连接两个不同的地点,且是双向的. 测试 ...

  9. 【HDU - 6184】Counting Stars(三元环计数,二分,优化暴力,O(m*sqrt(m)),图论)

    题干: Little A is an astronomy lover, and he has found that the sky was so beautiful! So he is countin ...

最新文章

  1. mysql 多行转换多列 列不确定_多行转多列,行数和列数不确定
  2. Winform开发框架之系统重新登录、自动登录实现
  3. SQL Server之其他函数——空值处理
  4. Oracle 10g 下载地址
  5. WinForm经典窗体皮肤[重绘]
  6. html——黑体、斜体、下划线及删除线
  7. 最小覆盖圆的增量算法
  8. Android之严苛模式(StrictMode)
  9. linux下离线安装gcc
  10. Mac没有winnt格式_Mac视频格式转换工具-H265 Converter Pro
  11. ubuntu虚拟显示器远程连接桌面方案
  12. endnote修改正文中参考文献标注_Endnote之文献标注
  13. # 写论文也要告别abandon模式
  14. 【实验记录】yolov5的一些改进tricks总结--持续更ing
  15. 《Sass 基础教程》共40节宁皓网课程
  16. 读《春秋》有感之十六:楚共王选谥号
  17. U盘删除附带的CD驱动器内的数据
  18. php识别word语言,PHP读取word文档
  19. 技术团队人员管理:组建团队的目的和基本规则
  20. Cyber_monitor的使用

热门文章

  1. mysql 多数据库实例_Mysql多实例安装
  2. SpringSecurity分布式整合之common工具模块创建
  3. RangeAssignor(范围分区)
  4. dubbo每次都要连zookeeper?
  5. 执行SQL-获取缓存
  6. Spring5的通信报文
  7. Function接口练习之按照指定要求操作数据
  8. 常用的函数式接口_Function接口练习_自定义函数模型拼接
  9. Oracle之同义词,DBLINK,表空间
  10. 闭包案例产生多个相同的随机数 沙箱