hdu 1181 深搜

中文题

深搜

许久没写鸟,卡在输入问题上...

 

 1 #include <iostream>

 2 #include <string>

 3 using namespace std;

 4 bool flg;

 5 int n;

 6 char str[5000][2];

 7 bool used[5000];

 8 void dfs(int p)

 9 {

10     int i;

11     if (p >=n || flg) return;

12     if (str[p][1] == 'm')    

13     {

14         flg = true;

15         return;

16     }

17     for (i=0; i<n; i++)

18         if (!used[i] && str[i][0] == str[p][1])

19         {

20             used[i] = true;

21             dfs(i);

22             used[i] = false;

23 

24         }

25 }

26 int main()

27 {

28 

29     int i;

30     string tmp;//="12345";

31     //cout<<tmp.back()<<endl;

32     while (cin>>tmp && tmp[0] != '0')

33     {

34         i=0;

35         flg = false;

36         memset(used, false, sizeof(used));

37         str[i][0] = tmp[0];

38         str[i++][1] = tmp[tmp.length()-1];

39         while (cin>>tmp && tmp[0] != '0') 

40         {

41             str[i][0] = tmp[0];

42             str[i++][1] = tmp[tmp.length()-1];

43         }

44         n = i;

45         for (i=0; i<n; i++)

46             if (!flg && str[i][0] == 'b')

47             {

48                 used[i] = true;

49                 dfs(i);

50                 used[i] = false;

51             }

52             if (flg)

53                 cout<<"Yes."<<endl;

54             else cout<<"No."<<endl;

55     }

56 }
View Code

 

你可能感兴趣的:(HDU)