1341:【例题】一笔画问题
解题前置知识:
- 定理1:存在欧拉路的条件:图是连通的,有且只有2个奇点。
- 定理2:存在欧拉回路的条件:图是连通的,有0个奇点。
#include<iostream>
#include<algorithm>
using namespace std;
const int N=1005;
// 邻接矩阵
int n,m,arr[N][N],e[N];
void dfs(int i){
for(int j=1;j<=n;j++){
if(arr[i][j]==1){
arr[i][j]=arr[j][i]=0;
dfs(j);
break;
}
}
printf("%d ",i);
}
int main(){
cin>>n>>m;
while(m--){
int a,b;
scanf("%d%d",&a,&b);
arr[a][b]=arr[b][a]=1;
e[a]++;
e[b]++;
}
//有可能全为偶数
int start=1;
for(int i=1;i<=n;i++)
if(e[i]%2){
start=i;
break;
}
dfs(start);
}