标签:起点 col else long 整数 space mem font nbsp
第一行一个数n表示点的个数;
接下来n-1行,每行两个整数x,y表示边;
保证输入数据形成一棵树;
1<=n<=100000
一行一个整数表示答案。
3 1 2 1 3
1
dfs,假设1为最顶层,遍历每一个节点,求出奇数层和偶数层的数量。
1 #include <bits/stdc++.h> 2 using namespace std; 3 #define ll long long 4 const int N = 100010; 5 vector<int> vs[N]; 6 bool vis[N]; 7 ll ans1, ans2; 8 void dfs(int x, int de) { 9 vis[x] = true; 10 for(int i = 0; i < vs[x].size(); i ++) { 11 int v = vs[x][i]; 12 if(!vis[v]) { 13 if((de+1) %2) ans1 ++; 14 else ans2 ++; 15 dfs(v, de+1); 16 } 17 } 18 } 19 void init(){ 20 ans1 = ans2 = 0; 21 memset(vis, false, sizeof(vis)); 22 for(int i = 1; i < N; i ++) vs[i].clear(); 23 } 24 int main() { 25 int n, x, y; 26 while(scanf("%d", &n)!=EOF) { 27 init(); 28 for(int i = 1; i < n; i ++) { 29 scanf("%d %d", &x, &y); 30 vs[x].push_back(y); 31 vs[y].push_back(x); 32 } 33 dfs(1, 1); 34 ans1++; 35 // printf("%d %d\n", ans1, ans2); 36 ll cnt = (ans1-1)*ans1 + (ans2-1)*ans2; 37 printf("%lld\n",cnt/2); 38 } 39 return 0; 40 }
标签:起点 col else long 整数 space mem font nbsp
原文地址:http://www.cnblogs.com/xingkongyihao/p/7668608.html