逃生的代码 AC
#include<iostream>
#include<unordered_map>
#include<algorithm>
using namespace std;
struct treeNode{     int value;     unordered_map<int, treeNode*> map;     treeNode(int value){         this->value = value;     }
};
int getNum(treeNode* nodes[], int i){     // cout << nodes[1]->value;     int size = nodes[i]->map.size();     int result = 0;     unordered_map<int, treeNode*>::iterator ite = nodes[i]->map.begin();     if(ite == nodes[i]->map.end()){         // cout << "***"<<endl;         return 1;     }     if(i == 1){         while(ite != nodes[i]->map.end()){             int help = ite->second->value;             result  = max(result,getNum(nodes, help));             ite++;         }         return result;     }else{         while(ite != nodes[i]->map.end()){             int help = ite->second->value;         // result  = max(result,getNum(nodes, help));             result += getNum(nodes,help);             ite++;         }     }          // cout << size;     return result+1;
}
int main(){     int n;     cin >> n;     treeNode* nodes[n+1];     // 建立n个节点     for(int i=1;i<=n;i++){         nodes[i] = new treeNode(i);     }     int from,to;     //连接n 条边     for(int i=0;i<n-1;i++){         cin >> to >>from;         nodes[from]->map[to] = nodes[to];     }     cout << getNum(nodes,1);     return 0;
}