1 条题解

  • 0
    @ 2026-5-19 1:13:37

    一、思路分析

    先去找第一头奶牛的祖上,若直接没有了,就输出"NOT RELATED"。若还剩下,就去找他们俩个的祖先,用一个变量去存下隔了几代,然后输出,若隔了超过两代,就用 for 循环输出 ans2ans-2 个"great-",最后输出是 aunt 还是 mother 即可。

    二、构造代码

    #include<bits/stdc++.h>
    using namespace std;
    int n,ans=0;
    string x,y,v,b[105],a[105];
    string dfs(string v){
    	for(int i=0;i<n;i++){
    		if(v==b[i]) return a[i];
    	}
    	return "";
    }
    int main(){
    	cin>>n>>x>>y;
    	for(int i=0;i<n;i++) cin>>a[i]>>b[i];
    	v=x;
    	while(v!=""){
    		string t=y;
    		int cnt=0,flag=-1;
    		while(t!=""){
    			if(v==t){
    				flag=cnt;
    				break;
    			}
    			t=dfs(t);
    			cnt++;
    		}
    		if(flag!=-1) break;
    		v=dfs(v);
    		ans++;
    	}
    	if(v==""){
    		cout<<"NOT RELATED"<<endl;
    		return 0;
    	}
    	int cnt=0,flag=-1;
    	string t=y;
    	while(t!=""){
    		if(v==t){
    			flag=cnt;
    			break;
    		}
    		t=dfs(t);
    		cnt++;
    	}
    	if(flag==1&&ans==1) cout<<"SIBLINGS"<<endl;
    	else if(flag>1&&ans>1) cout<<"COUSINS"<<endl;
    	else{
    		if(flag>ans){
    			swap(x,y);
    			swap(flag,ans);	
    		}
    		cout<<y<<" is the ";
    		for(int i=0;i<ans-2;i++) cout<<"great-";
    		if(ans>1&&!flag) cout<<"grand-";
    		if(!flag) cout<<"mother";
    		else cout<<"aunt";
    		cout<<" of "<<x<<endl;
    	}
    	return 0;
    }
    
    • 1

    信息

    ID
    6789
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    递交数
    20
    已通过
    5
    上传者