正题

题目链接:https://www.luogu.com.cn/problem/AT2339


题目大意

给出nnn个点mmm条边的一张无向图,然后有一张n×nn\times nn×n的图,每个点是一个二元组(a,b)(a,b)(a,b)。(a,b)(a,b)(a,b)和(c,d)(c,d)(c,d)连边当且仅当aaa和ccc有连边,bbb和ddd有连边。

求新图的连通块数量

1≤n≤105,1≤m≤2×1051\leq n\leq 10^5,1\leq m\leq 2\times 10^51≤n≤105,1≤m≤2×105


解题思路

计数问题,我们考虑固定一个基准,以原图中的连通块为基准。

对于一个点(x,y)(x,y)(x,y),它能走到的点,发现如果xxx和yyy所在的连通块都可以黑白染色,那么xxx和yyy的黑白顺序是固定的,否则无论如何xxx整个都可以变为整个连通块或者yyy可以变为整个连通块。

然后这样一些会发现样例都过不了,因为有一种很特殊的点,就是没有任何边连接的点,这一部分的点我们需要特判。

记大小不是111的连通块数为AAA,其中能奇偶染色的为BBB,大小为111的连通块数为CCC,那么答案就是:
A×A+B×B+C×n×2−C×CA\times A+B\times B+C\times n\times 2-C\times CA×A+B×B+C×n×2−C×C

时间复杂度:O(n+m)O(n+m)O(n+m)


code

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll N=2e5+10;
struct node{ll to,next;
}a[N<<1];
ll n,m,tot,siz,A,B,C,ls[N],v[N];
bool flag;
void addl(ll x,ll y){a[++tot].to=y;a[tot].next=ls[x];ls[x]=tot;return;
}
void dfs(ll x,ll c){if(v[x]==(c^1))flag=1;if(v[x]>=0)return;v[x]=c;siz++;for(ll i=ls[x];i;i=a[i].next)dfs(a[i].to,c^1);return;
}
signed main()
{scanf("%lld%lld",&n,&m);for(ll i=1,x,y;i<=m;i++){scanf("%lld%lld",&x,&y);addl(x,y);addl(y,x);}memset(v,-1,sizeof(v));for(ll i=1;i<=n;i++)if(v[i]<0){flag=siz=0;dfs(i,0);if(siz==1)C++;else A++,B+=!flag;}printf("%lld\n",1ll*A*A+1ll*B*B+2ll*C*n-C*C);return 0;
}

AT2339-[AGC011C]Squared Graph【黑白染色】相关推荐

  1. hdu 5285 二分图黑白染色

    题意:给出 n 个人,以及 m 对互不认识的关系,剩余的人都互相认识,要将所有人分成两组,组内不能有互不认识的人,要求每组至少有一人,并且第一组人数尽量多,问两组人数或不可能时单独输出 BC 48 场 ...

  2. BZOJ-2756 奇怪的游戏 黑白染色+最大流+当前弧优化+二分判断+分类讨论

    这个题的数据,太卡了,TLE了两晚上,各种调试优化,各种蛋疼. 2756: [SCOI2012]奇怪的游戏 Time Limit: 40 Sec Memory Limit: 128 MB Submit ...

  3. Codeforces Round #609 (Div. 2) D. Domino for Young 黑白染色

    传送门 文章目录 题意: 思路: 题意: 给你个不规则的网络格子,有nnn列,每列有aia_iai​个格子,让你将1×21×21×2的多米诺骨牌无重叠的放进去,问最多能放多少个. 思路: 首先如果点数 ...

  4. AGC 027D.Modulo Matrix(构造 黑白染色)

    题目链接 \(Description\) 给定\(n\),要求构造一个\(n\times n\)的矩阵,矩阵内的元素两两不同,且任意相邻的两个元素\(x,y\),满足\(\max(x,y)\ \mat ...

  5. 黑白染色——封锁阳光大学

    所谓黑白染色,就是指用bfs或dfs依次遍历每一个点,同时进行染色,一黑一白,如果遇到已经染过色的点并且点的颜色和即将要染的颜色冲突,就说明无法进行二分,无法满足染色.大概就是这样的. 下面我们看一道 ...

  6. AtCoder Beginner Contest 209 D - Collision「黑白染色」

    D - Collision 题目描述: 给一颗树,q次询问,每次询问给两个点x和y,两个点上放两个人以相同的速度,沿着二者的最短路前进,问二者会在点上相遇,还是在边上相遇 思路: 不难发现,对于任意两 ...

  7. 【HDU】4859 海岸线 黑白染色+最小割

    传送门:[HDU]4859 题目分析: 最小割的思想真是博大精深! 本题的模型是最小割. 我们需要最大化海岸线的长度,如果相邻两点属性不同才会存在海岸线(海和陆地),所以我们可以将题目转化成最小化不是 ...

  8. 2638: 黑白染色

    题目链接 题目大意:黑白矩阵,每次可以选择一个四联通块染色,求最少操作次数 题解:将目标状态里相同颜色的联通块缩点,枚举起点,生成树里的最大节点深度就是需要的次数了 如果最大深度是白色的话记得-1 我 ...

  9. Atcoder Grand 011 C - Squared Graph

    题意: 给出一个n个点的图,现在构造一个有n^2个点的新图,新图每个点表示为(a,b)(a,b<=n),两个点$(a,b),(c,d)$之间有边当且仅当原图中ac之间有边,bd之间有边. 问新图 ...

最新文章

  1. 传潘石屹投资爱蜂潮 天猫不予评论
  2. 【FluidSynth】SoundFont 音源文件资料收集 ( SoundFont 规范 | SoundFont 音源下载 | SoundFont 编辑器 | 博客资源 )
  3. GitHub 2W 星:一键生成前后端代码
  4. 利用AutoHotkey实现Vim和Excel的数据传递
  5. 推荐一个非常好的行为验证码开源项目!
  6. Android 数据库制作APP,在Android 中使用Anko框架制作一个完整的App,第二集
  7. dockerfile nginx配置
  8. C++ 内存分配层次以及memory primitives的基本用法
  9. 基于JAVA+SpringMVC+Mybatis+MYSQL的网上相册展示系统
  10. Excel怎么删除表格最后的空行
  11. 2015校招某度WEB前端笔试题
  12. 新版edge找不到internet选项
  13. 【发布】哔哩哔哩bilibili替换旧版播放(稍后再看)
  14. excel手机版_微软的新办公利器,这才是手机办公该有的亚子!
  15. android 天气动画,为app制作炫酷天气动画 – WeatherView
  16. python3 安装 pip (PyPI)
  17. PE系统是什么?怎么进入PE重装电脑系统
  18. 油气计量比较好的软件_您准备好使用计量互联网了吗?
  19. 物联网专业课程简介及理解
  20. Stata:缺失值填充的又一利器!

热门文章

  1. 数据挖掘在呼叫中心的六大应用点
  2. java输入数据插入if_java编程,从键盘录入10个整数数据,将每次录入的数据按从小到大的顺序插入到数组中。...
  3. 设置mysql表myisam_mysql myisam 优化设置设置
  4. java gzip 解压文件_Java实现文件压缩与解压[zip格式,gzip格式]
  5. 楚乔传手游 服务器维护,楚乔传手游网络异常进不去游戏怎么办?楚乔传网络异常解决方法...
  6. php webshell开源,[github开源]webshell连接器--Jeshell
  7. leetcode62. 不同路径
  8. 提升对前端的认知,不得不了解Web API的DOM和BOM
  9. 『软件测试3』八大典型的黑盒测试方法已来袭,快快接住!
  10. android 背景图片居中显示文字,Android ImageSpan 给文字设置圆角背景 并且文字居中,背景居中。...