第一行——咕咕咕。
第二行——我胡汉三又回来啦!
这次的欧拉回路针对的是有向图。(个人觉得比无向图简单嘻嘻
有向图构成欧拉路径:
除了起始终止点,其他点的出度入度相等。
即统计入度为0的点和出度为0的点,大于1则不存在欧拉路径,满足的情况下比较其余每个点的出入度,均相等即为构成欧拉路径。
有向图构成欧拉回路:
所有点的出度入度相等。
统计每个点的出入度比较即可。
题目链接SDNU1088
代码
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
int p,q;
scanf("%d",&p);
scanf("%d",&q);
int c[1001],r[1001];
int tot = 0;
memset(c,0,sizeof(c));
memset(r,0,sizeof(r));
for(int i = 0; i < q; ++i)
{
int a,b;
scanf("%d%d",&a,&b);
c[a]++;
r[b]++;
}
int sum = 0;
int ans = 0;
for(int i = 1; i <= p; ++i)
{
if(r[i]==0)
sum++;
if(c[i]==0)
tot++;
}
if(sum>1||tot>1)
{
printf("NO\n");
return 0;
}
for(int i = 1; i <= p; ++i)
{
if(c[i]==r[i])
continue;
else
ans++;
}
if(ans > 2)
printf("NO\n");
else
printf("YES\n");
return 0;
}