-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathPYRA - Treeramids.cpp
88 lines (75 loc) · 2.34 KB
/
PYRA - Treeramids.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
///HEADERS
#include <bits/stdc++.h>
///PREPROCESSORS
#define ll long long int
#define ull unsigned ll
#define vii vector<int>
#define vll vector<ll>
#define pb push_back
#define LIM 10000
#define MOD 1000000007
#define MAX 10000000
#define pi acos(-1)
#define segVar int lft = node << 1 , rgt = (node << 1) + 1 , md = (st+ed) >> 1;
#define pii pair<int,int>
#define mpr make_pair
#define EPS 1e-9
#define sqr(x) ((x)*(x))
#define gamma 0.5772156649
#define harm(x) log(x) + gamma + 1.0/(2*x) - 1.0/(12*sqr(x))
#define joshephus(n,k) j(int n, int k) {ll res = 1; for(ll i=2; i<=n; i++) res = (res+k-1) % i + 1; return res;}
#define FAST ios_base::sync_with_stdio(false);cin.tie(NULL);
///IMPORTANT EQUATIONS
///STARS AND BARS : (n+k-1)C(k-1)
///STIRLING TWO : F(n,k) = F(n-1,k-1) + k*(n-1,k); F(n,1) = 1 , F(n,n) = 1;
///STIRLING ONE : F(n,k) = F(n-1,k-1) + (n-1)*(n-1,k); F(n,1) = (n-1)! , F(n,n) = 1;
///CATALAN NUMBER : Cat(n) = Comb(2n,n) - Comb(2n,n-1) = Comb(2n,n)/(n+1);
using namespace std;
struct info{
int x,y,z;
info() {x = y = z = 0;}
info(int xx, int yy = 0, int zz = 0) {
x = xx; y = yy; z = zz;
}
};
bool cmpx(info x, info y) {
return x.x < y.x;
}
bool cmpy(info x, info y) {
return x.y < y.y;
}
int n,u,v;
vii graph[LIM+10];
int vis[LIM+10];
info dfs(int u) {
vis[u] = 1;
int sz = graph[u].size();
int ans = 1, vol=0;
for(int i=0; i<sz; i++) {
int v = graph[u][i];
if(vis[v]) continue;
ans++;
info tmp = dfs(v);
ans += tmp.x;
vol += tmp.y;
}
return info(ans, ans+vol);
}
int main() {
// freopen("i.txt", "r", stdin);
// freopen("o.txt", "w",stdout);
int T;
scanf("%d", &T);
for(int t=1; t<=T; t++) {
scanf("%d", &n);
memset(graph, NULL, sizeof graph);
memset(vis, 0, sizeof vis);
for(int i=1; i<n; i++) {
scanf("%d %d", &u,&v);
graph[u].pb(v);
graph[v].pb(u);
}
printf("%d\n", dfs(0).y);
}
return 0;
}