/* 复制文字时自动加版权 */

2023/6/10 学习笔记

欧拉图

欧拉图的定义

欧拉回路:所有的边都经历一次不重复的回路

欧拉通路:所有的边都经历一次不重复的路径

欧拉图:具有欧拉回路的图

半欧拉图:具有欧拉通路的图

 连通图只有0个或者偶数个奇数出度点

判别方法:

1.无向图欧拉回路:

(1)除去度为0的点外,其他的点相互连通

(2)顶点度数都是偶数

2.无向图欧拉通路:

(1)除去度为0的点外,其他的点相互连通

(1)具有0个或者偶数个奇数度顶点

3.有向图欧拉回路:

(1)非零度顶点是强连通图

(2)每个顶点的入度和出度数相同

4.有向图欧拉通路

(1)非零度顶点是弱连通图

(2)至多一个顶点的出度与入度之差为 1

(3)至多一个顶点的入度与出度之差为 1

(3)其他顶点的入度和出度相等

例题洛谷p1636

https://www.luogu.com.cn/problem/P1636

根据上面的无向图欧拉通路和连通图具有偶数个奇数度点,我们可以知道,两个奇数度点之间有一条欧拉通路,所以我们可以数奇数度点的个数,然后除以2就是我们要求的欧拉通路个数也即本题要求的笔画个数。

//code

#include<iostream> #define maxm 100005 using namespace std; int vis[maxm]; int main(){ std::cin.tie(0); std::ios::sync_with_stdio(false); int n,m,ant=0; cin>>n>>m; for(int i=0;i<m;i++){ int u,v; cin>>u>>v; vis[u]++; vis[v]++; } for(int i=1;i<=n;i++){ if(vis[i]%2!=0){ ant++; } } if(ant==0){ printf("1\n"); } else{ printf("%d\n",ant/2); } return 0; }

 

posted @ 2023-06-10 21:44  Sora~悠远的苍穹  阅读(43)  评论(0)    收藏  举报