zoj 3321 - Circle

本文介绍了一种通过深度优先搜索(DFS)算法来判断无向图中是否存在欧拉回路的方法。该算法首先构建图的数据结构,然后利用递归进行深度优先遍历,检查是否所有边都被恰好经过一次。

题目:判断欧拉回路。

分析:搜索。

说明:(2011-09-19 01:24)。

#include <iostream>
#include <cstring>

using namespace std;

bool maps[ 11 ][ 11 ];
bool used[ 11 ];

bool dfs( int n, int s, int d )
{
    if ( d == n ) return true;
    bool value = false;
    for ( int i = 1 ; i <= n ; ++ i )
        if ( !used[ i ] && maps[ s ][ i ] ) {
            used[ i ] = true;
            value |= dfs( n, i, d+1 );
            used[ i ] = false;
        }
    return value;
}

int main()
{
    int n,m,a,b; 
    while ( cin >> n >> m ) {
        bool flag = true;
        memset( maps, 0, sizeof( maps ) );
        memset( used, 0, sizeof( used ) );
        for ( int i = 0 ; i < m ; ++ i ) {
            cin >> a >> b;
            maps[ a ][ b ] = maps[ b ][ a ] = true;
        }
        used[ 1 ] = true;
        
        if ( m == n && dfs( n, 1, 1 ) )
            cout << "YES" << endl;
        else
            cout << "NO" << endl;
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值