一笔画判断

一笔画判断
时间限制:1秒 内存限制:128M
题目描述
如果一个图存在一笔画,则一笔画的路径叫做欧拉路,如果最后又回到起点,那这个路径叫做欧拉回路。 根据一笔画的两个定理,如果寻找欧拉回路,对任意一个点执行深度优先遍历;找欧拉路,则对一个奇点执行dfs,时间复杂度为O(m+n),m为边数,n是点数,题目保证该图连通,即从任何一点出发经过有限条路可以到达任何一点。
输入描述
第一行n,m,有n个点,m条边,以下m行描述每条边连接的两点。0<n<1000。
输出描述


有欧拉路输出“此图存在欧拉路,可一笔画成”,存在欧拉回路输出“此图存在欧拉回路,可一笔画成”,既不存在欧拉路也不存在欧拉回路,输出“此图无法一笔画成”

样例
输入
5 5
1 2
2 3
3 4
4 5
5 1
输出
此图存在欧拉回路,可一笔画成

#include<iostream>
using namespace std;
int main()
{
int n,m,s=0,i,c[1001]={0};
int a,b;
cin>>n>>m;
for(i=1;i<=m;i++)
{
cin>>a>>b;
c[a]++;
c[b]++;
}
for(i=1;i<=n;i++)
{
if(c[i]%2!=0)
{
s++;
}
}
if(s==2)
{
cout<<"此图存在欧拉路,可一笔画成";
}
else if(s==0)
{
cout<<"此图存在欧拉回路,可一笔画成";
}
else
{
cout<<"此图无法一笔画成";
}
return 0;
}

posted on 2020-06-10 20:10  田宸玮  阅读(375)  评论(0编辑  收藏  举报

导航