稀乱的代码,,最后我自己都看不懂了。。
#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;
}