题目:一笔画问题
题目描述
如果一个图存在一笔画,则一笔画的路径叫做欧拉路,如果最后又回到起点,那这个路径叫做欧拉回路。
输入输出格式
输入格式:
第一行n,m,有n个点,m条边,以下m行描述每条边连接的两点。
输出格式:
欧拉路或欧拉回路
输入输出样例
输入样例#1:
5 5
1 2
2 3
3 4
4 5
5 1
输出样例#1:
1 5 4 3 2 1
```c++
#include<bits/stdc++.h>
using namespace std;
int n,x,y,m[2025][2025],degree[2025],s=1,route[10010],pos,k;
void find(int start){
route[pos++]=start;
for(int i=k;i>=1;i--){
if(m[start][i]){
m[start][i]=0;
m[i][start]=0;
find(i);
}
}
}
int main(){
scanf("%d%d",&k,&n);
for(int i=1;i<=n;i++){
scanf("%d%d",&x,&y);
m[x][y]=m[y][x]=1;
degree[x]++,degree[y]++;
}
for(int i=1;i<=k;i++){
if(degree[i]%2==1){
s=i;
break;
}
}
find(s);
for(int i=0;i<pos;i++) printf("%d ",route[i]);
}
> 错误样例
>输入:8 15
1 2
2 3
3 4
4 5
5 6
6 1
1 7
2 7
3 7
4 7
1 8
2 8
3 8
4 8
5 8
>正确输出:5 8 4 7 3 8 2 7 1 6 5 4 3 2 1 8