稀乱的代码,,最后我自己都看不懂了。。

#include <unordered_map>
#include <string>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
    int N;
    while(cin>>N){
    unordered_map <string,vector<string>>map;
    for(int i=0;i<N;i++)
    {
        string s;
        cin>>s;
        int number =0;
        cin>>number;
        vector<string> vec;
        for(int j=0;j<number;j++){
        string ss;
        cin>>ss;
            vec.push_back(ss);
        }
        map[s].insert(map[s].end(),vec.begin(),vec.end());
        
    }
    auto it = map.begin();
    unordered_map<string,int> zuobi;
    for(;it!=map.end();it++){
        for(int i=0;i<it->second.size();i++){
            string temp = it->second[i];
            vector<string>a = map[temp];
            
           // cout<<a[0]<<endl;
            if(find(a.begin(),a.end(),it->first)!=a.end())
            { if(temp!=it->first)
            { //cout<<temp;
            // cout<<it->first;
                zuobi[temp]++;
            zuobi[it->first]++;
            }
             //cout<<temp;
            }
        }
    }
  
   // cout<<zuobi.size()<<endl;
    
           if(zuobi.size()!=0){
            for(it=map.begin();it!=map.end();it++)
            {
                vector<string> temp3= it->second;
               // cout<<it->first;
                for(int i=0;i<temp3.size();i++){
                    for(int j=i+1;j<temp3.size();j++)
                    {
                        if(zuobi[temp3[i]]!=0&&zuobi[temp3[j]]!=0)
                    {
                        zuobi[it->first]++;
                    // cout<<zuobi["1"]<<endl;}
                }
             //   cout<<zuobi.begin()->first;
                }
            }
           }
           }
   
        if(zuobi.size()!=0)
        {auto it2 = zuobi.begin();
    vector<string>zuobivec;
    for(it2=zuobi.begin();it2!=zuobi.end();it2++){
        if(it2->second!=0)zuobivec.push_back((it2->first));
    }
    sort(zuobivec.begin(),zuobivec.end());
          cout<<zuobivec.size()<<endl;
    for(int i =0 ;i<zuobivec.size();i++)
        cout<<zuobivec[i]<<" ";
    //cout<<zuobi[0]<<endl;
       cout<<endl; }
        else cout<<"0"<<endl;
    }

    return 0;
}