zoukankan      html  css  js  c++  java
  • [Poi2014][BZOJ3522] Hotel

    3522: [Poi2014]Hotel

    Time Limit: 20 Sec  Memory Limit: 128 MB
    Submit: 278  Solved: 136
    [Submit][Status][Discuss]

    Description

    有一个树形结构的宾馆,n个房间,n-1条无向边,每条边的长度相同,任意两个房间可以相互到达。吉丽要给他的三个妹子各开(一个)房(间)。三个妹子住的房间要互不相同(否则要打起来了),为了让吉丽满意,你需要让三个房间两两距离相同。
    有多少种方案能让吉丽满意?

    Input

    第一行一个数n。
    接下来n-1行,每行两个数x,y,表示x和y之间有一条边相连。

    Output

    让吉丽满意的方案数。

    Sample Input

    7
    1 2
    5 7
    2 5
    2 3
    5 6
    4 5

    Sample Output

    5

    HINT

    【样例解释】

    {1,3,5},{2,4,6},{2,4,7},{2,6,7},{4,6,7}




    【数据范围】

    n≤5000

    Source

    暴力枚举中点,乘法原理。t1,t2过渡一下。
    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<algorithm>
    #include<cmath>
    #include<vector>
    #include<queue>
    #define ll long long
    using namespace std;
    int next[10005],list[10005],head[5005],num[5005];
    ll sum,t1[5005],t2[5005];
    int tot,n,x,y,mx;
    void insert(int x,int y)
    {
        next[++tot]=head[x];
        head[x]=tot;
        list[tot]=y;
    }
    void dfs(int x,int fa,int deep)
    {
        mx=max(mx,deep);
        num[deep]++;
        for (int i=head[x];i;i=next[i])
            if (list[i]!=fa) dfs(list[i],x,deep+1);
    }
    
    int main()
    {
        scanf("%d",&n);
        for (int i=1;i<n;i++)
        {
            scanf("%d%d",&x,&y);
            insert(x,y);
            insert(y,x);
        }
        for (int i=1;i<=n;i++)
        {
            memset(t1,0,sizeof(t1));
            memset(t2,0,sizeof(t2));
            for (int j=head[i];j;j=next[j])
            {
                memset(num,0,sizeof(num));
                dfs(list[j],i,1);
                for (int k=1;k<=mx;k++)
                {
                    sum+=t2[k]*num[k];
                    t2[k]+=num[k]*t1[k];
                    t1[k]+=num[k];
                }
            }
        }
        printf("%lld",sum);
        return 0;
    }
     
  • 相关阅读:
    yzoj P2344 斯卡布罗集市 题解
    yzoj P2350 逃离洞穴 题解
    yzoj P2349 取数 题解
    JXOI 2017 颜色 题解
    NOIP 2009 最优贸易 题解
    CH 4302 Interval GCD 题解
    CH4301 Can you answer on these queries III 题解
    Luogu2533[AHOI2012]信号塔
    Luogu3320[SDOI2015]寻宝游戏
    Luogu3187[HNOI2007]最小矩形覆盖
  • 原文地址:https://www.cnblogs.com/ws-fqk/p/4664845.html
Copyright © 2011-2022 走看看