zoukankan      html  css  js  c++  java
  • 小K的疑惑 (找规律)

    传送门

    画画图可以发现dis[i][j]==dis[j][k]==dis[i][k]这个连等式等于1是不可能的,只能是等于0。这个连等式等于0,说明了i到j的距离,j到k的距离以及i到k的距离都是偶数,此时我们选取一号节点作为树的根节点,则对i和j有个结论,若i到j的距离为偶数,则i到根节点,和j到根节点的距离的奇偶性相同,这里设到根节点距离为奇数的点的个数为x,为偶数的点的个数为y,则满足条件的(i,j,k)的个数为x^3+y^3.

    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    const int maxn=1e4+10;
    struct node
    {
        int ed,w;
        node(int edd=0,int ww=0)
        {
            ed=edd;
            w=ww;
        }
    };
    vector<node>g[maxn];
    int n,x,y;
    void dfs(int now,int d,int fa)
    {
        if(d&1)
            x++;
        else
            y++;
        int sz=g[now].size();
        for(int i=0;i<sz;i++)
        {
            int e=g[now][i].ed,w=g[now][i].w;
            if(e==fa) continue;
            dfs(e,d+w,now);
        }
    }
    int main()
    {
        scanf("%d",&n);
        for(int i=1;i<n;i++)
        {
            int s,e,w;
            scanf("%d %d %d",&s,&e,&w);
            g[s].push_back(node(e,w));
            g[e].push_back(node(s,w));
        }
        dfs(1,0,0);
        printf("%lld
    ",(ll)x*x*x+(ll)y*y*y);
        return 0;
    }
    
  • 相关阅读:
    java学习笔记(5)
    java学习笔记(4)
    java学习笔记(3)
    java学习笔记(2)
    java学习笔记(1)
    很棒的Nandflash资料
    Tx2440_Lcd
    git-github学习心得
    多文档编辑器
    假设检验
  • 原文地址:https://www.cnblogs.com/eason9906/p/11754846.html
Copyright © 2011-2022 走看看