CF 789D 规律,图论,计数
题目链接: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 规律,图论,计数相关推荐
- CF——1611D,图论构造题打卡
愿题目翻译: 您将得到一个由
- codeforces:C. Another Array Problem【分类讨论 + 找规律】
目录 题目截图 题目分析 ac code 总结 题目截图 题目分析 做cf题目别老想着套算法模版 找规律才是正道,这就是所谓的「思维」 n = 2很简单 n >= 4: # 肯定有一个最大值,不 ...
- 在计算机系统中有两种不同的图像编码方式,第二章计算机系统与计算原理.ppt...
第二章计算机系统与计算原理 大学计算机基础 * 信息表示与处理 ----西文字符 ASCII 码是美国信息交换标准代码(American Standard Code for Information I ...
- codeforce 272B Dima and Sequence
B. Dima and Sequence Dima got into number sequences. Now he's got sequence a1, a2, ..., an, consisti ...
- jmeter脚本增强
插件管理器 jmeter-plugins-manager-1.6.jar 插件我上传到资源了 把jar包放到jmeter安装目录下lib下的ext文件夹里,然后重启jmeter就可以了 重启完jmet ...
- 海康威视E200Pro固态硬盘(联芸MAS0901)SMART信息解析
基于江波龙Longsys SSD toolbox.CrystalDiskInfo.海康SSD toolbox.硬盘哨兵推断而来,部分内容可能有误 09 带电工作时间 0C 通电次数 A7 ...
- YBT进阶一年游P1 递归与递推
YBT进阶一年游P1 递归与递推 这一系列的题都来自于ybt高效进阶,相当有难度,所以以后尽可能坚持每一部分的题都写一篇博客进行总结.本人水平很一般,能力很有限,故解法和写法不一定(应该说是一定不)最 ...
- python判断字符串开头_python_如何判断字符串a以某个字符串开头或结尾?
案例: 某文件系统目录下有一系列文件: 1.c 2.py 3.java 4.sh 5.cpp ...... 编写一个程序,给其中所有的.sh文件和.py文件加上可执行权限 如何解决这个问题? 1. 先 ...
- 计数器及其应用实验报告
实验报告内容: 实验目的 1.掌握中规模集成计数器的逻辑功能及使用方法. 2.了解集成计数器的扩展及应用. 实验器材 数字电子实验箱 2.同步十进制可逆计数器74LS192×2;2输入四与门74LSO ...
- 2022noip游记
最后一年,这场可能就是退役之战 考前晚上睡不着,想了很多东西,回顾从前的比赛,以自己的水平应该每次都能打进队线,但真正到比赛时似乎永远都打不好,总会出现各种各样的问题,刚过去的csp就是极好的例子,最 ...
最新文章
- cv2.waitKey(1) == ord('key')的等待键盘用法
- VTK修炼之道83:Pipeline管线执行模型
- 如何更改OST、OAB文件的默认路径?
- Window.document对象
- 你根本想象不到,学霸到底经历过什么
- 【记录保存】批量删除进程
- mysql 存储过程遍历_Mysql创建存储过程及遍历查询结果
- 英文操作系统下WebBrowser控件无法显示本地页面的解决方法
- Rainbond 5.0正式发布, 支持对接管理已有Kubernetes集群...
- bzoj5248(洛谷4363)(2018九省联考)一双木棋
- pecamaker+corosync高可用集群的搭建
- 出现ESXi系统无法连接FreeNAS的情况?90%以上的人都做错了!
- webgl框架介绍以及webgl项目的技术选型问题
- cinamon桌面添加xkill快捷键
- MySQL索引原理和引擎
- linux irc工具,构建基于Linux下的IRC服务器和WEBIRC登陆平台
- C#工业触摸屏上位机源码 替代传统plc搭载的触摸屏
- 给穷鬼创业者的话:没有千万甚至上亿还是别做App,你那几十万还不如炒房
- Python:设置不显示Using TensorFlow backend及FutureWarning: Passing (type, 1) or ‘1type‘ as a synonym of typ
- 0丢失之谜:解决Oracle中0开头小数被截断的问题
热门文章
- matlab卡方拟合优度检验,卡方拟合优度检验在教学中的应用及Matlab实现_刘泽显.pdf...
- 63个国外优秀测试网站地址
- 为什么使用java8_为什么java8还在被大量使用?
- HTML5 MathML
- 低代码学习教程:如何用表单做倒计时的实现?
- 第七讲(一):VLAN的原理及配置
- 渗透测试核心--信息收集
- iphone3gs升级6.0后纠结的几天
- 解决Windows vista 开启ACHI模式的问题
- 刚刚!腾讯再发阳光普照奖:每人100股,价值超6万;差绩效都有7个月年终奖!...