D. Love Rescue-(并查集)

总结

知道有关联的字符,然后一个集合置为一个字符的关系,就可以了

const int N=1e5+5;
int fat[N];
int find(int x)
{
    return fat[x]==x?x:fat[x]=find(fat[x]);
}
signed main()
{
    IOS;
    //file();
    int n;
    string s1,s2;
    cin>>n>>s1>>s2;
    for(int i=0;i<26;i++)
        fat[i]=i;
    vector<pair<char,char> >ans;
    for(int i=0;i<n;i++)
    {
        int x=find(s1[i]-'a');
        int y=find(s2[i]-'a');
        if(x!=y)
            fat[x]=y;
    }
    for(int i=0;i<26;i++)
    {
        int x=find(i);
        if(x!=i)
            ans.pb({'a'+i,'a'+x});
    }
    int len=ans.size();
    cout<<len<<endl;
    for(int i=0;i<len;i++)
        cout<<ans[i].F<<" "<<ans[i].S<<endl;
    return 0;
}
发布了130 篇原创文章 · 获赞 5 · 访问量 4989

猜你喜欢

转载自blog.csdn.net/weixin_44224825/article/details/104283935