判断欧拉路是否存在的方法
有向图:图连通,有一个顶点出度大入度1,有一个顶点入度大出度1,其余都是出度=入度。
无向图:图连通,只有两个顶点是奇数度,其余都是偶数度的。
判断欧拉回路是否存在的方法
有向图:图连通,所有的顶点出度=入度。
有向图:图连通,有一个顶点出度大入度1,有一个顶点入度大出度1,其余都是出度=入度。
无向图:图连通,只有两个顶点是奇数度,其余都是偶数度的。
判断欧拉回路是否存在的方法
有向图:图连通,所有的顶点出度=入度。
无向图:图连通,所有顶点都是偶数度。
#include"stdio.h"
#include<string.h>
int link[1010],f[1010];
int find(int a)
{
if(a!=f[a])
f[a]=find(f[a]);
return f[a];
}
int main()
{
int i,n,m,flag,a,b,x,y;
while(scanf("%d",&n),n)
{
for(i=1;i<=n;i++)
f[i]=i;
memset(link,0,sizeof(link));
scanf("%d",&m);
for(i=0;i<m;i++)
{
scanf("%d%d",&a,&b);
link[a]++;
link[b]++;
x=find(a);y=find(b);
if(x!=y)
f[x]=y;
}
flag=find(f[1]);
for(i=2;i<=n;i++)
{
if(find(i)!=flag)
break;
}
if(i<=n){puts("0");continue;}
for(i=1;i<=n;i++)
{
if(link[i]%2!=0)
break;
}
if(i<=n)puts("0");
else puts("1");
}
return 0;
}