1 solutions

  • 0
    @ 2024-6-1 16:57:06
    #include<bits/stdc++.h>
    using namespace std;
    map<string,string>p;//由map建立父子关系链
    string Get(string x){return p[x]==x?x:p[x]=Get(p[x]);}//求根函数,与int形式的get差不多
    int main(){
    	char start;string name,name2;//需要的变量
    	cin>>start;//这里用的是cin,因为使用scanf的时候出现了一些bug,printf/cout亦然(不知道为什么,有没有大佬可以在评论区解答)
    	while(start!='$'){//while循环(条件,start(即首字符)不为$)
    		cin>>name;//名字
    		if(start=='#'){if(p[name]=="")p[name]=name;name2=name;}//当一个人是父亲的时候,如果他没有父亲,他就是他们家族的祖先,name2交给后面的儿子用
    		else if(start=='+')
    			p[name]=name2;//如果是儿子,那么key就是父亲(name2存储父名)
    		else
    			cout<<name<<' '<<Get(name)<<endl;//如果输入?,那么直接按格式输出
    		cin>>start;//别忘了重启下一轮循环!
    	}
    	return 0;//自信递交!
    }
    
    
    • 1

    Information

    ID
    1882
    Time
    1000ms
    Memory
    125MiB
    Difficulty
    3
    Tags
    # Submissions
    1
    Accepted
    1
    Uploaded By