Tree and Permutation dfs hdu 6446
The set { 1,2,3,…,N } contains a total of N! unique permutations, let’s say the i-th permutation is Pi and Pi,j is its j-th number.
For the i-th permutation, it can be a traverse sequence of the tree with N vertices, which means we can go from the Pi,1-th vertex to the Pi,2-th vertex by the shortest path, then go to the Pi,3-th vertex ( also by the shortest path ) , and so on. Finally we’ll reach the Pi,N-th vertex, let’s define the total distance of this route as D(Pi) , so please calculate the sum of D(Pi) for all N! permutations.
The first line of each test case contains one integer N ( 1≤N≤105 ) .
For the next N−1 lines, each line contains three integer X, Y and L, which means there is an edge between X-th vertex and Y-th of length L ( 1≤X,Y≤N,1≤L≤109 ) .
1 2 1
2 3 1
3
1 2 1
1 3 2
24
- #include <cstdio>
- #include <cstring>
- #include <queue>
- #include <cmath>
- #include <algorithm>
- #include <set>
- #include <iostream>
- #include <map>
- #include <stack>
- #include <string>
- #include <vector>
- #define pi acos(-1.0)
- #define eps 1e-6
- #define fi first
- #define se second
- #define lson l,m,rt<<1
- #define rson m+1,r,rt<<1|1
- #define bug printf("******\n")
- #define mem(a,b) memset(a,b,sizeof(a))
- #define fuck(x) cout<<"["<<"x="<<x<<"]"<<endl
- #define f(a) a*a
- #define sf(n) scanf("%d", &n)
- #define sff(a,b) scanf("%d %d", &a, &b)
- #define sfff(a,b,c) scanf("%d %d %d", &a, &b, &c)
- #define sffff(a,b,c,d) scanf("%d %d %d %d", &a, &b, &c, &d)
- #define FIN freopen("DATA.txt","r",stdin)
- #define gcd(a,b) __gcd(a,b)
- #define lowbit(x) x&-x
- #pragma comment (linker,"/STACK:102400000,102400000")
- using namespace std;
- typedef long long LL;
- typedef unsigned long long ULL;
- const int INF = 0x7fffffff;
- const LL INFLL = 0x3f3f3f3f3f3f3f3fLL;
- const int mod = 1e9 + ;
- const int maxn = 1e6 + ;
- int n, tot, head[maxn];
- LL d[maxn], sz[maxn];
- struct node {
- int v, nxt;
- LL w;
- } edge[maxn << ];
- void init() {
- tot = ;
- mem(head, -);
- }
- void add(int u, int v, LL w) {
- edge[tot].v = v;
- edge[tot].w = w;
- edge[tot].nxt = head[u];
- head[u] = tot++;
- }
- void dfs(int u, int fa) {
- sz[u] = ,d[u]=;
- for (int i = head[u]; ~i ; i = edge[i].nxt) {
- int v = edge[i].v;
- if (v == fa) continue;
- dfs(v, u);
- sz[u] += sz[v];
- d[u] = (d[u] + d[v]) % mod;
- d[u] = (d[u] + edge[i].w * sz[v] % mod * (n - sz[v]) % mod) % mod;
- }
- }
- int main() {
- while(~sf(n)) {
- init();
- for (int i = ; i < n ; i++) {
- int u, v;
- LL w;
- scanf("%d%d%lld", &u, &v, &w);
- add(u, v, w);
- add(v, u, w);
- }
- dfs(, -);
- LL f = ;
- for (LL i = ; i <= n - ; i++) f = f * i % mod;
- LL ans = d[] * f * % mod;
- printf("%lld\n", ans);
- }
- return ;
- }
Tree and Permutation dfs hdu 6446的更多相关文章
- Tree and Permutation (HDU 6446) 题解
// 昨天打了一场网络赛,表现特别不好,当然题目难度确实影响了发挥,但还是说明自己太菜了,以后还要多多刷题. 2018 CCPC 网络赛 I - Tree and Permutation 简单说明一下 ...
- (1009) HDU 6446 Tree and Permutation(规律+树上各个点的距离和)
题意: 给一棵N个点的树,对应于一个长为N的全排列,对于排列的每个相邻数字a和b,他们的贡献是对应树上顶点a和b的路径长,求所有排列的贡献和. 分析: 经过简单的分析可以得知,全部的贡献其实相当与(这 ...
- 2018中国大学生程序设计竞赛 - 网络选拔赛 1009 - Tree and Permutation 【dfs+树上两点距离和】
Tree and Permutation Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Oth ...
- hdu6446 Tree and Permutation 2018ccpc网络赛 思维+dfs
题目传送门 题目描述:给出一颗树,每条边都有权值,然后列出一个n的全排列,对于所有的全排列,比如1 2 3 4这样一个排列,要算出1到2的树上距离加2到3的树上距离加3到4的树上距离,这个和就是一个排 ...
- 2018中国大学生程序设计竞赛 - 网络选拔赛 hdu Tree and Permutation 找规律+求任意两点的最短路
Tree and Permutation Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Oth ...
- HDU6446 Tree and Permutation(树上DP)
传送门:点我 Tree and Permutation Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (J ...
- Tree and Permutation
Tree and Permutation 给出一个1,2,3...N的排列,显然全部共有N!种排列,每种排列的数字代表树上的一个结点,设Pi是其中第i种排列的相邻数字表示的结点的距离之和,让我们求su ...
- HDU - 6446 Tree and Permutation
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6446 本题是一个树上的问题——DFS. 一棵N个结点的树,其结点为1~N.树具有N-1条边,每一条边具有 ...
- HDU 6446 Tree and Permutation(赛后补题)
>>传送门<< 分析:这个题是结束之后和老师他们讨论出来的,很神奇:刚写的时候一直没有注意到这个是一个树这个条件:和老师讨论出来的思路是,任意两个结点出现的次数是(n-1)!, ...
随机推荐
- VMWare Workstation新装CentOS 7无法联网解决办法
按照这位博主的方法成功解决:http://blog.csdn.net/deniro_li/article/details/54632949
- Aizu - 2249
注意先保证距离最短,再来判断价格 邻接矩阵回朝内存 ,要用邻接表的 #include<bits/stdc++.h> using namespace std; #define inf 0x ...
- 深入理解 Vuejs 动画效果
本文主要归纳在 Vuejs 学习过程中对于 Vuejs 动画效果的各个相关要点.由于本人水平有限,如文中出现错误请多多包涵并指正,感谢.如果需要看更清晰的代码高亮,请跳转至我的个人站点的 深入理解 V ...
- [转载]启动tomcat时,一直卡在Deploying web application directory这块的解决方案
转载:https://www.cnblogs.com/mycifeng/p/6972446.html 本来今天正常往服务器上扔一个tomcat 部署一个项目的, 最后再启动tomcat 的时候 发现项 ...
- Internet History,Tecchnology and Security
Internet History Internet Technologe Internet Secure
- iOS- 网络请求的两种常用方式【GET & POST】的区别
GET和POST 网络请求的两种常用方式的实现[GET & POST] –GET的语义是获取指定URL上的资源 –将数据按照variable=value的形式,添加到action所指向的URL ...
- C#中堆和栈的区别?
http://www.jb51.net/article/55306.htm http://www.cnblogs.com/JimmyZhang/archive/2008/01/31/1059383.h ...
- Qt窗口及控件-窗口Close()自动释放
版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:Qt-窗口Close()后自动释放空间 本文地址:http://techieliang ...
- 【Linux】- Ubuntu 配置mysql远程访问
ubuntu上安装mysql非常简单只需要几条命令就可以完成. sudo apt-get install mysql-server 安装过程中会提示设置密码什么的,注意设置了不要忘了,安装完成之后 ...
- IIS发布 MVC 配置
E:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll