蒟蒻求助
  • 板块P2814 家谱
  • 楼主yerosius
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/5/25 20:08
  • 上次更新2024/5/25 20:09:44
查看原帖
蒟蒻求助
1183011
yerosius楼主2024/5/25 20:08

没感觉出任何问题,但样例都过不了,求助!

#include<bits/stdc++.h>
using namespace std;
map<string,pair<string,int>>m;
string s,t,f;
string _find(string s1){
    if(m[s1].first != s1) m[s1].first= _find(m[s1].first);
    return m[s1].first;
}
void merge(string s1,string s2){
    string rs1= _find(s1),rs2= _find(s2);
    if(rs1!=rs2){
        m[rs2].first=rs1;
    }
}
int main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    while(cin>>s&&s!="$"){
        switch(s[0]){
            case '#':
                t=s.substr(1,s.size());
                f=t;
                m[t].first=t;
                break;
            case '+':
                t=s.substr(1,s.size());
                m[t].first=t;
                merge(f, t);
                break;
            case '?':
                t=s.substr(1,s.size());
                cout << t << ' ' << m[t].first << endl;
        }
    }
    return 0;
}
2024/5/25 20:08
加载中...