#include #include #include
if(mindex.find(key) != mindex.end())
mindex[key].push_back(value);
else
{
vkey.push_back(value);
mindex.insert(map<int,vector<int>>::value_type(key,vkey));
}
if(mindex.find(value) != mindex.end())
mindex[value].push_back(key);
else
{
vvalue.push_back(key);
mindex.insert(std::map<int,vector<int>>::value_type(value,vvalue));
}
}
vector<int> vai = mindex[ai];
int nbegin =0;
int nafter =vai.size();
int nai =vai.size();
int ncn = 1;
while(ncn < n)
{
for(int i=nbegin;i<nafter;i++)
{
int ni= vai[i];
vector<int> vi = mindex[ni];
for(int j=0;j<vi.size();j++)
{
int k = vi[j];
if((k!=ai) && (std::find(vai.begin(),vai.end(),k) == vai.end()))
vai.push_back(k);
}
}
ncn++;
nbegin = nafter;
nafter = vai.size();
if(nafter==n-1)
break;
}
std::cout << (vai.size() -nai ) << endl; }