AcWing 157. 树形地铁系统
简单的dfs序,这里就摆一些性质
- 如果两棵树同构,那么他们的最小表示法相同
- 每颗子树的01序数相等
tips:在中央车站上放一个哨兵根节点,防止出界
100 pts
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
string dfs(string &s, int &u)
{
u ++ ;
vector<string> str;
while(s[u] == '0') str.push_back(dfs(s, u));
u ++ ;
string res;
sort(str.begin(), str.end());
for(int i = 0; i < str.size(); i ++ ) res += str[i];
res = '0' + res + '1';
return res;
}
int main()
{
int T; cin >> T;
while(T -- )
{
string a, b; cin >> a >> b;
a = '0' + a + '1', b = '0' + b + '1';
int ua = 0, ub = 0;
if(dfs(a, ua) == dfs(b, ub)) puts("same");
else puts("different");
}
return 0;
}
本文来自博客园,作者:{三季野花},转载请注明原文链接:https://www.cnblogs.com/SanGarden/articles/17134651.html