Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <iostream>#include <string>#include <vector>#include <unordered_map>#include <unordered_set>#include <cstdio>#include <algorithm>using namespace std;int N;int numPartition(unordered_map<int, unordered_set<int> > &tree, vector<bool> &visit, unordered_map<int, int> &map_num_node, int cur){if(visit[cur]) return 0;visit[cur] = true;for(int next : tree[cur]){if(!visit[next])map_num_node[cur] += numPartition(tree, visit, map_num_node, next);}return map_num_node[cur];}int main(){unordered_map<int, unordered_set<int>> tree;unordered_map<int, int> map_num_node;int n;scanf("%d", &n);N = n;vector<bool> visit(n + 1, false);int a = 0, b = 0;for(int i = 0; i < n - 1; i++){