总感觉这题是个题意杀,理解错题目了,看了好久才发现题目意思:操作是让,只要两点没有直接相连,而且只要有一条路的距离3,就可以把这两点连接起来。

按照题解中讲的,可以把图分为二分图和非二分图来解。不过题解中的操作我没看懂。。但是画几个图看看就很清除了。

先说二分图:

可以看到,两个点集中,斜对着的点的距离都是3,比如说点对1,2和点对3,4,都是距离为3的点,直接连上就行。

假设两个点集点的数量分别为c1,c2,当把所有这样的点对连接后,总共有c1*c2条边。同一点集中任意亮点距离为2.

再说非二分图。

这个图就是非二分图了,然后画线,连接距离为3的点,可以先按照上边那个二分图那样先把线画满,然后再连接同一个点集中点与点之间的连线。

按照二分图的方式连完线后,会发现这里有一个1-3之间的线,5-2之间的距离本来为2,多了1-3,就多了一条距离为3的路线,且5-2之间没有直接相连,

可以连接一条线,然后再连接别的,这样距离为2的两个点都会因为多那么一条线,从而多了一个距离为3的路线,所以要连接起来,最后连接成一个完全图。

总共n*(n-1)/2条线。

那么也就知道这题的答案了。。

#include <bits/stdc++.h>
using namespace std; const int MAXN = 1e5+10;
struct Edge
{
int to,next;
}edge[MAXN*2];
int head[MAXN];
int tot;
int col[MAXN];
long long c1,c2;
bool flag; void addedge(int u, int v)
{
edge[tot].to = v;
edge[tot].next = head[u];
head[u] = tot++;
} void dfs(int u, int color)
{
if(flag) return;
col[u] = color;
if(color == 1)
++c1;
else
++c2;
for(int i = head[u]; i != -1; i = edge[i].next)
{
int v = edge[i].to;
if(!col[v])
dfs(v,3-color);
else if(col[v] == color)
{
flag = true;
return;
}
}
} int main()
{
ios::sync_with_stdio(false);
long long n,m;
cin >> n >> m;
int u,v;
memset(head,-1,sizeof(head));
memset(col,0,sizeof(col));
c1 = c2 = tot = 0;
flag = false;
for(int i = 0; i < m; ++i)
{
cin >> u >> v;
addedge(u,v);
addedge(v,u);
}
dfs(1,1);
if(flag)
cout << n*(n-1)/2-m;
else
cout << c1*c2-m << endl;
return 0;
}

最新文章

  1. silverlight 跨域访问 wcf
  2. ZOJ 3349 Special Subsequence 简单DP + 线段树
  3. bzoj列表3
  4. Exception Handling Statements (C# Reference)
  5. 自定义函数标签(JSTL)
  6. iOS 的 APP 在系统中如何适配不同的屏幕的尺寸
  7. Python中安装numpy,scipy,matplotlib安装方法
  8. poj 3020 Antenna Placement (最小路径覆盖)
  9. Hibernate中HQL函数汇总及获取当前时间进行比较举例
  10. dom4j解析xml文档全面介绍
  11. StarUML添加自定义approach和profile
  12. golang中使用mysql数据库
  13. Linux基础知识梳理
  14. python学习笔记_week24
  15. HDU2859(KB12-Q DP)
  16. 006.Zabbix添加监控主机
  17. sql server性能查询,连接数
  18. BZOJ 2726: [SDOI2012]任务安排 [斜率优化DP 二分 提前计算代价]
  19. 让Windows Server 2008 + IIS 7+ ASP.NET 支持10万并发请求 The serverRuntime@appConcurrentRequestLimit setting is being exceeded.
  20. JS 拖动原理

热门文章

  1. 洛谷P1314 [NOIP2011提高组Day2T2] 聪明的质监员
  2. 将自己的代码托管到github - 秦时明月 - CSDN博客
  3. sqlyog备份数据和导入备份数据
  4. 2019阿里云开年Hi购季新用户分会场全攻略!
  5. ML面试1000题系列(71-80)
  6. python3.7 安装gensim使用word2Vec库
  7. POJ1190 洛谷P1731 NOI1999 生日蛋糕
  8. ES6 中字符串的扩展
  9. Android开源实战:使用MVP+Retrofit开发一款文字阅读APP
  10. jquery 浏览器缓存网页