AcWing 157. 树形地铁系统

AcWing 157. 树形地铁系统

简单的dfs序,这里就摆一些性质

  1. 如果两棵树同构,那么他们的最小表示法相同
  2. 每颗子树的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;
}
posted @ 2023-02-19 15:24  Sankano  阅读(30)  评论(0编辑  收藏  举报