map<int,vector<int>> tree;
int a,b;
- vector<int> temp1{0};
for (int i = 0; i < N-1;i++)
{
cin >> a >> b;
if ((tree.find(a) == tree.end()))
{ // not found
- temp1[0] = b;
- tree.insert({a,temp1});
+ tree.insert({a,{b}});
}
else
{// found
}
if ((tree.find(b) == tree.end()))
{ // not found
- temp1[0]= a;
- tree.insert({b,temp1});
+ tree.insert({b,{a}});
}
else
{// found
queue<vector<vector<int>>> q;
for (int i = 0; i < M; i++)
{
- vector<int> tseen;
- vector<int> c{pho_restaurants[i],0};
- vector<vector<int>> temp{c,tseen};
- q.push(temp);
+ q.push({{pho_restaurants[i],0},{}});
}
- vector<vector<vector<int>>> seen;
- vector<int> pho_seen,temp3;
+ set<vector<vector<int>>> seen;
+ vector<int> pho_seen;
vector<vector<int>> temp, temp2;
int current, length;
while (!q.empty())
length = temp[0][1];
pho_seen = temp[1];
q.pop();
- temp3.clear();
- temp3.push_back(current);
- temp2.clear();
- temp2.push_back(temp3);
- temp2.push_back(pho_seen);
+ temp2 = {{current},pho_seen};
+
if (find(seen.begin(),seen.end(),temp2) != seen.end())
{
continue;
}
else
{
- seen.push_back(temp2);
+ seen.insert(temp2);
}
for (int r = 0; r < tree[current].size();r++)
{
- vector<int> c{tree[current][r], length + 1};
- vector<vector<int>> next_value{c,pho_seen};
- q.push(next_value);
+ q.push({{tree[current][r], length + 1}, pho_seen});
}
}
return 0;