CF788B Weird journey
总共有n个节点,m条路径,要求其中m-2条路径走两遍,剩下2条路径仅走一遍,问不同的路径总数有多少,如果仅走一遍的两条边不同则将这两条路径视为不同。
可以把每条边都拆成两条重边,每条边的度数都是偶数了,那么就相当于从图中删去两条边且剩下的图中存在欧拉路经
欧拉路经存在的话就是图连通且每个点的度数都是偶数或只有两个点的度数是奇数,所以删边有如下情况
1.删两条自环
2.删一条自环和一条普通边
3.删两条有公共点的普通边
于是直接暴力统计即可,复杂度\(O(n)\)
//minamoto
#include<bits/stdc++.h>
#define R register
#define ll long long
#define fp(i,a,b) for(R int i=a,I=b+1;i<I;++i)
#define fd(i,a,b) for(R int i=a,I=b-1;i>I;--i)
#define go(u) for(int i=head[u],v=e[i].v;i;i=e[i].nx,v=e[i].v)
using namespace std;
char buf[1<<21],*p1=buf,*p2=buf;
inline char getc(){return p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++;}
int read(){R int res,f=1;R char ch;while((ch=getc())>'9'||ch<'0')(ch=='-')&&(f=-1);for(res=ch-'0';(ch=getc())>='0'&&ch<='9';res=res*10+ch-'0');return res*f;
}
const int N=1e6+5;
struct eg{int u,v;}e[N];
int fa[N],deg[N],vis[N],n,m,k,sum,u,v,Fa;ll ans;
int find(R int x){return fa[x]==x?x:fa[x]=find(fa[x]);}
int main(){
// freopen("testdata.in","r",stdin);n=read(),m=read();fp(i,1,n)fa[i]=i;fp(i,1,m){u=e[i].u=read(),v=e[i].v=read();vis[u]=vis[v]=1;if(u==v)++sum;else{++deg[u],++deg[v];u=find(u),v=find(v);if(u!=v)fa[u]=v,Fa=v;}}fp(i,1,n)if(vis[i]&&find(i)!=Fa)return puts("0"),0;fp(i,1,m)if(e[i].u==e[i].v)ans+=m-1;else ans+=deg[e[i].u]+deg[e[i].v]+sum-2;printf("%lld\n",ans>>1);return 0;
}
转载于:https://www.cnblogs.com/bztMinamoto/p/10159287.html
CF788B Weird journey相关推荐
- 【cf789D】Weird journey(欧拉路、计数)
cf788B/789D. Weird journey 题意 n个点m条边无重边有自环无向图,问有多少种路径可以经过m-2条边两次,其它两条边1次.边集不同的路径就是不同的. 题解 将所有非自环的边变成 ...
- 【CodeForces - 789D】Weird journey(思维,图的性质,tricks,有坑)
题干: Little boy Igor wants to become a traveller. At first, he decided to visit all the cities of his ...
- CF788789(div1div2)
文章目录 前言 CF789A Anastasia and pebbles Description\text{Description}Description Solution\text{Solution ...
- Codeforces 题目合集+分类+代码 【Updating...】【361 in total】
961A - Tetris 模拟 ...
- 过程即奖励(The Journey is the Reward)
今天读完了<乔布斯传>.翻着这本书最后的影集,乔布斯传奇一生的一幕幕仿佛在眼前展开.从第一张照片中特里独行.桀骜不驯的年轻人,到最后一张照片中阳光下慈祥微笑的老者,看到的仿佛不是乔布斯的照 ...
- Journey源码分析三:模板编译
2019独角兽企业重金招聘Python工程师标准>>> 在Journey源码分析二:整体启动流程中提到了模板编译,这里详细说下启动流程 看下templates.Generate()源 ...
- POJ 2488 A Knight's Journey (棋盘DFS)
A Knight's Journey 大意: 给出一个国际棋盘的大小,判断马能否不重复的走过所有格,并记录下其中按字典序排列的第一种路径. 1 #include <map> 2 #in ...
- TOJ 1702.A Knight's Journey
2015-06-05 问题简述: 有一个 p*q 的棋盘,一个骑士(就是中国象棋里的马)想要走完所有的格子,棋盘横向是 A...Z(其中A开始 p 个),纵向是 1...q. 原题链接:http:// ...
- 【程序员の英文听写】Trump’s Totally Not Weird Way of Standing | The Daily Social Distancing Show
Trump's Totally Not Weird Way of Standing | The Daily Social Distancing Show From The Daily Show wit ...
最新文章
- asp论坛回复功能怎么实现_在asp.netcore中使用中间件(middleware)实现api拦截及验证功能
- linux进程篇 (二) 进程的基本控制
- Redis的Hash操作
- 电销机器人价格_供应商电话销售机器人服务为先
- boost::callable_traits添加volatile成员的测试程序
- 智能卡电子钱包应用密钥体系
- .NET Core 3.0 中的新变化
- go设置后端启动_为什么 Rubyists 应该考虑学习 Go
- r语言echarts画箱线图_R语言之数据可视化---交互式图表recharts
- 在打字稿中,是什么! (惊叹号/ bang)运算符取消引用成员时?
- Android中Java根据文件头获取文件类型
- ScrollView中嵌套ListView的完美解决方案
- 第六次作业阶段一 学生成绩录入系统设计与实现
- 网线制作ppt_制作网线图解ppt课件
- 2015最新iherb海淘攻略-图文入门教程
- Elasticsearch监控插件Marvel的安装使用
- java @around_正确理解Spring AOP中的Around advice
- Mysql You can‘t specify target table ‘表名‘ for update in FROM clause错误解决方案
- 视频怎样转换html代码,超简单的视频格式转换方法,你会吗?
- 【opencv】opencv窗口创建、大小调整等问题