欧拉图

欧拉路径:每条边经过且只经过一次的路径

欧拉回路:如果从某个点出发,经过且只经过每条边一次,最后又回到这个点的路径

欧拉图:存在欧拉回路的图

图:

平凡图:只含有一个点

重边:两点之间有多条边

自环:从某点出发且不经过其他任何点又回到该点

简单图:没有自环和重边的图

完全图:任何两点之间都有边相连

子图:点和边都小于或等于原图,但这部分点的连接方式都与原图相同

结点的度:关联到结点的边的条数

入度:有向图入边的数目

出度:有向图出边的数目

例题:总共有n个点,给出m组的a,b的值,以为者a,b之间有一条边相连,如何判断这个图是不是欧拉图

for(int i=0;i<m;i++){

cin>>a>b;

deg[a]++;

deg[b]++;}

bool ok=true;

for(int i=0;i<n;i++){

if(deg[i]%2!=0){

ok=false;

break;}}

if(ok)cout<<"Yes"<<endl;

else cout<<"No"<<endl;

例2:给出一个连通的有向图u,问这个图是不是欧拉图

for(int i=0;i<m;i++)

{cin>>u>>v;

out[u]++;

in[v]++;}

bool ok=true;

for(int i=0;i<n;i++){

if(in[i]!=out[i]){

ok=flase ;

break;}

}

if(ok)cout<<"Yes"<<endl;

else cout<<"No"<<endl;

欧拉回路:

无向图: 每个顶点的度数都是偶数,则存在欧拉回路。

有向图: 每个顶点的入度都等于出度,则存在欧拉回路 。

欧拉路径:

无向图: 当且仅当该图所有顶点的度数为偶数 或者 除了两个度数为奇数外其余的全是偶数。

有向图: 当且仅当该图所有顶点 出度=入度 或者 一个顶点 出度=入度+1,另一个顶点 入度=出度+1,其 他顶点 出度=入度。

你若盛开,清风自来...
原文地址:https://www.cnblogs.com/shangjindexiaoqingnian/p/5757824.html