_xiaobai_

导航

zoj3321 Circle(搜索)

/*

   简单的搜索,欧拉回路的判断

*/

View Code
 1 #include <iostream>
2 #include <cstring>
3
4 using namespace std;
5
6 bool maps[ 11 ][ 11 ];
7 bool used[ 11 ];
8
9 bool dfs( int n, int s, int d )
10 {
11 if ( d == n ) return true;
12 bool value = false;
13 for ( int i = 1 ; i <= n ; ++ i )
14 if ( !used[ i ] && maps[ s ][ i ] ) {
15 used[ i ] = true;
16 value |= dfs( n, i, d+1 );
17 used[ i ] = false;
18 }
19 return value;
20 }
21
22 int main()
23 {
24 int n,m,a,b;
25 while ( cin >> n >> m ) {
26 bool flag = true;
27 memset( maps, 0, sizeof( maps ) );
28 memset( used, 0, sizeof( used ) );
29 for ( int i = 0 ; i < m ; ++ i ) {
30 cin >> a >> b;
31 maps[ a ][ b ] = maps[ b ][ a ] = true;
32 }
33 used[ 1 ] = true;
34
35 if ( m == n && dfs( n, 1, 1 ) )
36 cout << "YES" << endl;
37 else
38 cout << "NO" << endl;
39 }
40 return 0;
41 }

posted on 2011-08-17 14:31  _xiaobai_  阅读(207)  评论(0编辑  收藏  举报