HDU- - 变形课
用vertor动态数组来做的,模拟链表。
#include<iostream>
#include<vector>
#include<string>
#include<queue>
using namespace std;
const int Max = 27;
bool used[Max];
int flag;
vector<int>V[26];
void DFS(int n)
{
if(n=='m'-'a') //找到目标
{
flag = 1;
return ;
}
else
{
while(!V[n].empty())
{
int k = V[n].back(); //取最后一个元素
V[n].pop_back(); //记得删除
used[k] = true; //还得标记为已用
DFS(k);
}
}
}
int main()
{
string s;
int a, b;
while(cin>>s)
{
a = s[0] - 'a';
b = s[s.length()-1] - 'a';
V[a].push_back(b); //链接到此链的最后面
while(cin>>s && s!="0")
{
a = s[0] - 'a';
b = s[s.length()-1] - 'a';
V[a].push_back(b);
}
flag = 0;
memset(used, false, sizeof(used));
used[1] = true;
DFS(1);
if(flag)
cout<<"Yes.\n";
else
cout<<"No.\n";
/* for(int i=0; i<Max; i++)
{
V[i].clear();
}*/
}
return 0;
}