题意:

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

问新图中有几个联通块。

第一眼看上去似乎很不可做,想一想新图中两个点$(a,b),(c,d)$在同一个联通块其实就是原图中放着两个棋子,一个在a,一个在b,两个棋子同时走相同步后第一个棋子在c,第二个在d。

先考虑两个棋子在原图同一个联通块里的情况,如果这个联通块有奇环,那么这个联通块里所有点对在新图中是一个联通块,否则是两个,大概就是同时从黑\白点走或者从一黑一白走。

如果两个棋子在原图中不同联通块里,那么如果两个联通块中都没有奇环,那么形成两个联通块,否则形成一个。

需要特判原图中联通块大小为1的情况。

#include<bits/stdc++.h>
#define N 400005
#define ll long long
using namespace std;
int n,m;
int head[N],ver[N],nxt[N],tot;
void add(int a,int b)
{tot++;nxt[tot]=head[a];head[a]=tot;ver[tot]=b;return ;
}
int v[N];
int cnt,flag,sz,szz,tp;
void dfs(int x,int c)
{cnt++;v[x]=c;for(int i=head[x];i;i=nxt[i]){if(v[ver[i]]==-1)dfs(ver[i],c^1);else if(v[ver[i]]!=(c^1))flag=1;}return ;
}
int main()
{scanf("%d%d",&n,&m);for(int i=1;i<=m;i++){int t1,t2;scanf("%d%d",&t1,&t2);add(t1,t2);add(t2,t1);}ll ans=0;memset(v,-1,sizeof(v));for(int i=1;i<=n;i++){cnt=0;flag=0;if(v[i]==-1)dfs(i,0);if(cnt){if(flag||cnt==1)ans++;else ans+=2;if(cnt==1)tp++;else{if(!flag)szz++;sz++;}}}ans+=1LL*2*tp*(n-1);ans-=1LL*tp*(tp-1);ans+=1LL*sz*(sz-1);ans+=1LL*szz*(szz-1);cout<<ans<<endl;return 0;
}

  

转载于:https://www.cnblogs.com/ezyzy/p/7681660.html

Atcoder Grand 011 C - Squared Graph相关推荐

  1. 【每日亿题#12】AtCoder Grand Contest 021 (A ~ F)全部题解

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 文章目录 AtCoder Grand Contest 021 题解 A. Digit Sum 2 B. ...

  2. AtCoder Grand Contest 008: Contiguous Repainting(思维)

    Contiguous Repainting 时间限制: 2 Sec  内存限制: 256 MB 提交: 69  解决: 22 [提交][状态][讨论版][命题人:admin] 题目描述 There a ...

  3. AtCoder Grand Contest 017

    AtCoder Grand Contest 017 A - Biscuits 有\(n\)个数,问有多少个集合的数的和模\(2\)余\(P\). 随便\(dp\)一下就好了. #include< ...

  4. AtCoder题解——AtCoder Grand Contest 048——A - atcoder < S

    题目相关 题目链接 AtCoder Grand Contest 048 A 题,https://atcoder.jp/contests/agc048/tasks/agc048_a. Problem S ...

  5. AtCoder题解 —— AtCoder Grand Contest 050 —— B - Three Coins —— 动态规划

    题目相关 题目链接 AtCoder Grand Contest 050 B 题,https://atcoder.jp/contests/agc050/tasks/agc050_b. Problem S ...

  6. UPC个人训练赛第十五场(AtCoder Grand Contest 031)

    传送门: [1]:AtCoder [2]:UPC比赛场 [3]:UPC补题场 参考资料 [1]:https://www.cnblogs.com/QLU-ACM/p/11191644.html B.Re ...

  7. [AtCoder Grand Contest 048] D - Pocky Game(区间dp + 博弈)

    problem AtCoder solution 注意:本题不是平等博弈,因为先手只能取最左边,后手只能取最右边. 设 f[l][r][k]:f[l][r][k]:f[l][r][k]: 只剩下区间 ...

  8. Atcoder Grand Contest 010 B - Boxes 差分

    B - Boxes 题目连接: http://agc010.contest.atcoder.jp/tasks/agc010_b Description There are N boxes arrang ...

  9. AtCoder Grand Contest 010 D - Decrementing

    题目传送门:https://agc010.contest.atcoder.jp/tasks/agc010_d 题目大意: 有\(n\)个数\(A_i\),它们的\(gcd\)是1,A.B两人轮流操作, ...

最新文章

  1. Microsoft Dynamics CRM 2013 试用之系统篇 正式安装 Microsoft Dynamics CRM Server 2013
  2. CORS漏洞的利用方式(精)
  3. app服务器该如何配置文件,当你使用 SQL Server 2016 或更高版本应用用户配置文件时,App-V 服务器发布可能会失败...
  4. Echart.js的趋势图入门与实例
  5. Sublime Text3 Emmet用法
  6. linux tomcat配置https
  7. Linux内核部件分析 设备驱动模型之device-driver
  8. duilib消息类型
  9. 软件工程 第五章:交互图
  10. 苹果审核4.3如何解决?混淆?还是重新上架?用这招居然成功上架AppStore了!
  11. ~囍~ 将欢乐进行到底篇
  12. rnn 循环神经网络
  13. 《巴巴拉少校》读书笔记优秀范文2877字
  14. java和scala代码可以混合编写吗_Scala字符串插值的妙用,以及java+scala混合编程
  15. git之pull与push
  16. iOS开发基础知识--碎片37
  17. uni-app - 禁用 APP 横屏旋转(用户操作行为)
  18. 关闭eclipse控制台console中的非Java Server(ESLint、Angular Language Server等)
  19. 百分点认知智能实验室:智能校对的技术原理和实践
  20. 用ps将一张图设置成自己想要的尺寸而不变形

热门文章

  1. js解决EasyUI页面渲染速度慢问题(Mask遮罩)
  2. 测试和恢复性的争论:面向对象vs.函数式编程
  3. cocos2d-x的A*寻路
  4. 整理一点关于Lucene的学习资料, 方便自己与别人查看
  5. ASP.NET编程中常用到的27个函数集
  6. Unity Shader基本例子
  7. Python离线安装依赖包
  8. 学会使用Spring注解
  9. 结构控制Switch Case
  10. 让PasswordRecovery控件使用Email地址找回密码