题目链接:http://codeforces.com/contest/789/problem/D
题意:给定一个无向图,可能有自环,无重边,你要求出满足恰好有两条边只走了一次,其它都走了两次的路径数量。两种方案不同当且仅当边不同。 n,m⩽1e6

解法:
先判联通。然后我们把自环和普通边分开考虑。
如果都选普通边,那么这两条边一定要有公共点,用度数计算一下即可。
如果一个选自环,那么显然任意普通边都能成为另一条边。
如果两个都选自环,那么显然没问题。
那么这道题就是一个计数问题了。

//CF 789D#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6+10;
const int maxm = 2*maxn;
int n, m, edgecnt, head[maxn];
struct edge{int v, nxt;edge(){}edge(int v, int nxt) : v(v), nxt(nxt) {}
}E[maxm];
void init(){memset(head, -1, sizeof(head));edgecnt = 0;
}
void addedge(int u, int v){E[edgecnt].v = v, E[edgecnt].nxt = head[u], head[u] = edgecnt++;
}
bool vis[maxn], b[maxn];
///vis标记连通块能访问到的,b标记自环
int num = 0, num2 = 0, du[maxn]; //du是记录度数,num记录普通边的边数,num2记录自环的点的数void dfs(int u)
{vis[u] = 1;for(int i = head[u]; ~i; i = E[i].nxt){int v = E[i].v;if(vis[v]) continue;dfs(v);}
}int main()
{init();scanf("%d%d", &n, &m);for(int i = 1; i <= m; i++){int u, v;scanf("%d%d", &u, &v);if(u == v){b[u] = 1;num2++;}else{addedge(u, v);addedge(v, u);num++;du[u]++;du[v]++;}}for(int i = 1; i <= n; i++){if(b[i] || head[i] != -1){dfs(i);break;}}for(int i = 1; i <= n; i++){if(!vis[i] && (head[i] != -1 || b[i])){printf("0\n");return 0;}}long long ans = 0;for(int i = 1; i <= n; i++){ans += 1LL*du[i]*(du[i]-1)/2;}ans += 1LL*num2*(m-num2) + 1LL*num2*(num2-1)/2;printf("%lld\n", ans);return 0;
}

CF 789D 规律,图论,计数相关推荐

  1. CF——1611D,图论构造题打卡

    愿题目翻译: 您将得到一个由

  2. codeforces:C. Another Array Problem【分类讨论 + 找规律】

    目录 题目截图 题目分析 ac code 总结 题目截图 题目分析 做cf题目别老想着套算法模版 找规律才是正道,这就是所谓的「思维」 n = 2很简单 n >= 4: # 肯定有一个最大值,不 ...

  3. 在计算机系统中有两种不同的图像编码方式,第二章计算机系统与计算原理.ppt...

    第二章计算机系统与计算原理 大学计算机基础 * 信息表示与处理 ----西文字符 ASCII 码是美国信息交换标准代码(American Standard Code for Information I ...

  4. codeforce 272B Dima and Sequence

    B. Dima and Sequence Dima got into number sequences. Now he's got sequence a1, a2, ..., an, consisti ...

  5. jmeter脚本增强

    插件管理器 jmeter-plugins-manager-1.6.jar 插件我上传到资源了 把jar包放到jmeter安装目录下lib下的ext文件夹里,然后重启jmeter就可以了 重启完jmet ...

  6. 海康威视E200Pro固态硬盘(联芸MAS0901)SMART信息解析

    基于江波龙Longsys SSD toolbox.CrystalDiskInfo.海康SSD toolbox.硬盘哨兵推断而来,部分内容可能有误 09    带电工作时间 0C    通电次数 A7  ...

  7. YBT进阶一年游P1 递归与递推

    YBT进阶一年游P1 递归与递推 这一系列的题都来自于ybt高效进阶,相当有难度,所以以后尽可能坚持每一部分的题都写一篇博客进行总结.本人水平很一般,能力很有限,故解法和写法不一定(应该说是一定不)最 ...

  8. python判断字符串开头_python_如何判断字符串a以某个字符串开头或结尾?

    案例: 某文件系统目录下有一系列文件: 1.c 2.py 3.java 4.sh 5.cpp ...... 编写一个程序,给其中所有的.sh文件和.py文件加上可执行权限 如何解决这个问题? 1. 先 ...

  9. 计数器及其应用实验报告

    实验报告内容: 实验目的 1.掌握中规模集成计数器的逻辑功能及使用方法. 2.了解集成计数器的扩展及应用. 实验器材 数字电子实验箱 2.同步十进制可逆计数器74LS192×2;2输入四与门74LSO ...

  10. 2022noip游记

    最后一年,这场可能就是退役之战 考前晚上睡不着,想了很多东西,回顾从前的比赛,以自己的水平应该每次都能打进队线,但真正到比赛时似乎永远都打不好,总会出现各种各样的问题,刚过去的csp就是极好的例子,最 ...

最新文章

  1. cv2.waitKey(1) == ord('key')的等待键盘用法
  2. VTK修炼之道83:Pipeline管线执行模型
  3. 如何更改OST、OAB文件的默认路径?
  4. Window.document对象
  5. 你根本想象不到,学霸到底经历过什么
  6. 【记录保存】批量删除进程
  7. mysql 存储过程遍历_Mysql创建存储过程及遍历查询结果
  8. 英文操作系统下WebBrowser控件无法显示本地页面的解决方法
  9. Rainbond 5.0正式发布, 支持对接管理已有Kubernetes集群...
  10. bzoj5248(洛谷4363)(2018九省联考)一双木棋
  11. pecamaker+corosync高可用集群的搭建
  12. 出现ESXi系统无法连接FreeNAS的情况?90%以上的人都做错了!
  13. webgl框架介绍以及webgl项目的技术选型问题
  14. cinamon桌面添加xkill快捷键
  15. MySQL索引原理和引擎
  16. linux irc工具,构建基于Linux下的IRC服务器和WEBIRC登陆平台
  17. C#工业触摸屏上位机源码 替代传统plc搭载的触摸屏
  18. 给穷鬼创业者的话:没有千万甚至上亿还是别做App,你那几十万还不如炒房
  19. Python:设置不显示Using TensorFlow backend及FutureWarning: Passing (type, 1) or ‘1type‘ as a synonym of typ
  20. 0丢失之谜:解决Oracle中0开头小数被截断的问题

热门文章

  1. matlab卡方拟合优度检验,卡方拟合优度检验在教学中的应用及Matlab实现_刘泽显.pdf...
  2. 63个国外优秀测试网站地址
  3. 为什么使用java8_为什么java8还在被大量使用?
  4. HTML5 MathML
  5. 低代码学习教程:如何用表单做倒计时的实现?
  6. 第七讲(一):VLAN的原理及配置
  7. 渗透测试核心--信息收集
  8. iphone3gs升级6.0后纠结的几天
  9. 解决Windows vista 开启ACHI模式的问题
  10. 刚刚!腾讯再发阳光普照奖:每人100股,价值超6万;差绩效都有7个月年终奖!...