C. Journey
time limit per test 2 seconds
memory limit per test 256 megabytes
input standard input
output standard output

There are n cities and n - 1 roads in the Seven Kingdoms, each road connects two cities and we can reach any city from any other by the roads.

Theon and Yara Greyjoy are on a horse in the first city, they are starting traveling through the roads. But the weather is foggy, so they can’t see where the horse brings them. When the horse reaches a city (including the first one), it goes to one of the cities connected to the current city. But it is a strange horse, it only goes to cities in which they weren't before. In each such city, the horse goes with equal probabilities and it stops when there are no such cities.

Let the length of each road be 1. The journey starts in the city 1. What is the expected length (expected value of length) of their journey? You can read about expected (average) value by the link https://en.wikipedia.org/wiki/Expected_value.

Input

The first line contains a single integer n (1 ≤ n ≤ 100000) — number of cities.

Then n - 1 lines follow. The i-th line of these lines contains two integers ui and vi (1 ≤ ui, vi ≤ nui ≠ vi) — the cities connected by thei-th road.

It is guaranteed that one can reach any city from any other by the roads.

Output

Print a number — the expected length of their journey. The journey starts in the city 1.

Your answer will be considered correct if its absolute or relative error does not exceed 10 - 6.

Namely: let's assume that your answer is a, and the answer of the jury is b. The checker program will consider your answer correct, if .

C. Journey
time limit per test

2 seconds

memory limit per test

256 megabytes

input

standard input

output

standard output

There are n cities and n - 1 roads in the Seven Kingdoms, each road connects two cities and we can reach any city from any other by the roads.

Theon and Yara Greyjoy are on a horse in the first city, they are starting traveling through the roads. But the weather is foggy, so they can’t see where the horse brings them. When the horse reaches a city (including the first one), it goes to one of the cities connected to the current city. But it is a strange horse, it only goes to cities in which they weren't before. In each such city, the horse goes with equal probabilities and it stops when there are no such cities.

Let the length of each road be 1. The journey starts in the city 1. What is the expected length (expected value of length) of their journey? You can read about expected (average) value by the link https://en.wikipedia.org/wiki/Expected_value.

Input

The first line contains a single integer n (1 ≤ n ≤ 100000) — number of cities.

Then n - 1 lines follow. The i-th line of these lines contains two integers ui and vi (1 ≤ ui, vi ≤ nui ≠ vi) — the cities connected by thei-th road.

It is guaranteed that one can reach any city from any other by the roads.

Output

Print a number — the expected length of their journey. The journey starts in the city 1.

Your answer will be considered correct if its absolute or relative error does not exceed 10 - 6.

Namely: let's assume that your answer is a, and the answer of the jury is b. The checker program will consider your answer correct, if .

Examples
input
4
1 2
1 3
2 4
output
1.500000000000000
input
5
1 2
1 3
3 4
2 5
output
2.000000000000000
Note

In the first sample, their journey may end in cities 3 or 4 with equal probability. The distance to city 3 is 1 and to city 4 is 2, so the expected length is 1.5.

In the second sample, their journey may end in city 4 or 5. The distance to the both cities is 2, so the expected length is 2.

题意:给你一棵树,每一条边的权值为1,让你求从1到叶子节点边权和的期望,到达每一个相邻节点的概率是一样的,不能走已走过的边。

题解:

dfs做一遍树形dp。

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,m;
double ans;
struct node
{
int next,to;
}edge[];
int head[],size=;
void putin(int from,int to)
{
size++;
edge[size].to=to;
edge[size].next=head[from];
head[from]=size;
}
void dfs(int u,int fa,double s,int depth)
{
int i,cnt=;
for(i=head[u];i!=-;i=edge[i].next)if(edge[i].to!=fa)cnt++;
if(cnt==){ans+=s*(double)depth;return;}
for(i=head[u];i!=-;i=edge[i].next)
if(edge[i].to!=fa)
dfs(edge[i].to,u,s*(double)(/(double)cnt),depth+);
}
int main()
{
int i,j;
memset(head,-,sizeof(head));
scanf("%d",&n);
for(i=;i<n;i++)
{
int a,b;
scanf("%d%d",&a,&b);
putin(a,b);
putin(b,a);
}
dfs(,,,);
printf("%.15lf",ans);
return ;
}

最新文章

  1. Esay ui数据加载等待提示
  2. C# 将多个office文件转换及合并为一个PDF文件
  3. FAQ&amp;ubuntu12.04 gedit 打开 txt 文件乱码
  4. IMetadataAware接口的特性定制Model元数据
  5. MyISAM与InnoDB的索引实现
  6. JavaScript 【跨浏览器XPath,做个兼容】
  7. jquery中html()或text()方法获取或设置p标签的值
  8. sql语句实现累计数
  9. Python Selenium之异常处理
  10. [ASP.NET] ASP.NET Identity 中 ClaimsIdentity 解析
  11. jsonp(对,通俗易懂)
  12. SQLite 知识摘要 --- 线程模式、事务模式
  13. 美丽的webpack-bundle-analyzer
  14. 【LGP5176】公约数
  15. Java正则表达式校验
  16. switch的穿透,是参数里包含case内容就执行。
  17. sql注入--基础
  18. 三、vue如何配置路由 、获取路由的参数、部分刷新页面、缓存页面
  19. Mount 挂载错误mount:block device /dev/sr0 is write – protected , mounting read-only
  20. php查询操作实现投票功能

热门文章

  1. 解决系统存在大量TIME_WAIT状态的连接
  2. XAML 编码规范 (思考)
  3. 网络编程 recv()函数
  4. Entity Framework之领域驱动设计实践
  5. Java 打包成exe安装包
  6. 《Java多线程编程核心技术》读后感(四)
  7. 微信小程序开发之带搜索记录的搜索框
  8. ACM-ICPC2018北京网络赛 Saving Tang Monk II(bfs+优先队列)
  9. 【转】springmvc @RequestParam
  10. tarjan求强连通分量的思考