AcWing 157 树形地铁系统(树的最小表示)

Posted shuitiangong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AcWing 157 树形地铁系统(树的最小表示)相关的知识,希望对你有一定的参考价值。

题目链接

解题思路

??求出两个字符串代表的树的最小表示,进行比对就能得到答案,为了方便处理,给他设定一个根,即在开头加一个0,当然在结尾也要再加上一个0。
??关于最小表示的求法,每次都求出子树字典序最小的组合方式,然后向上合并为字典序最小的组合方式即可,显然可以用递归来完成。

代码

const int maxn = 1e5+10;
int u,p[maxn];
string dfs(string s) {
    ++u;
    vector<string> tmp;
    while(s[u]==‘0‘) tmp.push_back(dfs(s));
    ++u;
    sort(tmp.begin(),tmp.end());
    string res = "0";
    for (auto s : tmp) res += s;
    res += ‘1‘;
    return res;
}
int main(){
    int t; cin >> t;
    while(t--) {
        string s1,s2;
        cin >> s1 >> s2;
        s1 = ‘0‘+s1+‘1‘;
        s2 = ‘0‘+s2+‘1‘;
        u = 0; string rs1 = dfs(s1);
        u = 0; string rs2 = dfs(s2);
        if (rs1==rs2) puts("same");
        else puts("different");
    }
    return 0;
}

以上是关于AcWing 157 树形地铁系统(树的最小表示)的主要内容,如果未能解决你的问题,请参考以下文章

bzoj1907树的路径覆盖 树形dp

bzoj1907: 树的路径覆盖(树形DP)

bzoj 1907: 树的路径覆盖贪心+树形dp

Acwing 1072. 树的最长路径

AcWing325计算机

求树的最大独立集,最小点覆盖,最小支配集 贪心and树形dp