码迷,mamicode.com
首页 > 其他好文 > 详细

codeforces 220 C. Game on Tree

时间:2018-06-08 20:43:07      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:return   turn   dfs   dep   class   cst   continue   node   inline   

题目链接

codeforces 220 C. Game on Tree

题解

对于 1节点一定要选的
发现对于每个节点,被覆盖切选中其节点的概率为祖先个数分之一,也就是深度分之一

代码

#include<cstdio>
#include<algorithm> 

const int maxn = 1000007;
struct node {
    int u,v,next; 
} edge[maxn << 1] ;
int head[maxn],num = 0;
inline void add_edge(int u,int v) { 
    edge[++ num].v = v;edge[num].next = head[u] ;head[u] = num; 
} 
int n; 
double ans = 0;
double dep[maxn]; 
void dfs(int x,int fa) { 
    ans += (1 / dep[x]); 
    for(int i = head[x]; i; i = edge[i].next) { 
        int v = edge[i].v; 
        if(v == fa)continue;
            dep[v] = dep[x] + 1.0; 
        dfs(v,x);   
    } 
}
int main() { 
    scanf("%d",&n); 
    for(int u,v,i = 1;i < n;++ i){ 
            scanf("%d%d",&u,&v);
        add_edge(u,v);add_edge(v,u) ;
    } 
    dep[1] = 1; 
    dfs(1,0); 
    printf("%.10lf",ans); 
    return 0;
}   

codeforces 220 C. Game on Tree

标签:return   turn   dfs   dep   class   cst   continue   node   inline   

原文地址:https://www.cnblogs.com/sssy/p/9157239.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!