逃生的代码 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;
}