Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int MAX = 1e5 + 10;
- vector<int>adj[MAX];
- int grau[MAX], vstd[MAX];
- int cnt[2];
- void dfs(int v, int g = 0) {
- grau[v] = g;
- vstd[v] = 1;
- cnt[g]++;
- for(auto u : adj[v]){
- if(!vstd[u]) {
- dfs(u, 1-g);
- }
- }
- }
- int main() {
- int n, u, v;
- scanf("%d", &n);
- memset(grau, -1, sizeof grau);
- for(int i = 0; i < n-1; ++i){
- scanf("%d %d", &u, &v);
- --u, --v;
- adj[u].push_back(v);
- adj[v].push_back(u);
- }
- dfs(0);
- long long ans = 0;
- for(int i = 0; i < n; ++i){
- if(grau[i] == 1){
- ans+= cnt[0] - adj[i].size();
- }
- }
- printf("%lld\n", ans);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement