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); 
}
posted @ 2021-10-19 23:17  Rekord  阅读(438)  评论(0编辑  收藏  举报