#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int N,M;
int graph[510][510];
int grade[510];
bool visited[510];
int cnt = 0;
void dfs(int ind)
{
visited[ind] = true;
cnt++;
for(int i=1;i<=N;i++)
{
if(graph[ind][i]&&!visited[i])
dfs(i);
}
}
int main()
{
scanf("%d%d",&N,&M);
for(int i=0;i<M;i++)
{
int x,y;
scanf("%d%d",&x,&y);
graph[x][y] = 1;
graph[y][x] = 1;
grade[x]++;
grade[y]++;
}
int oddcnt = 0;
for(int i=1;i<=N;i++)
{
if(i!=1)
printf(" ");
printf("%d",grade[i]);
if(grade[i]&1)
oddcnt++;
}
printf("\n");
dfs(1);
if(cnt!=N)
printf("Non-Eulerian\n");
else if(oddcnt==0)
printf("Eulerian\n");
else if(oddcnt==2)
printf("Semi-Eulerian\n");
else printf("Non-Eulerian\n");
return 0;
}
PAT 1126 Eulerian Path (25分)(欧拉路径)
最新推荐文章于 2021-08-17 22:16:51 发布