Description

小Q的工作是采摘花园里的苹果。在花园中有n棵苹果树以及m条双向道路,苹果树编号依次为1到n,每条道路的两

端连接着两棵不同的苹果树。假设第i棵苹果树连接着d_i条道路。小Q将会按照以下方式去采摘苹果:

1.小Q随机移动到一棵苹果树下,移动到第i棵苹果树下的概率为d_i/(2m),但不在此采摘。

2.等概率随机选择一条与当前苹果树相连的一条道路,移动到另一棵苹果树下

3.假设当前位于第i棵苹果树下,则他会采摘a_i个苹果,多次经过同一棵苹果树下会重复采摘。

4.重复第2和3步k次。

请写一个程序帮助计算小Q期望摘到多少苹果。

Input

第一行包含三个正整数n,m,k(n,k<=100000,m<=200000),分别表示苹果树和道路的数量以及重复步骤的次数。

第二行包含n个正整数,依次表示a_1,a_2,...,a_n(1<=a_i<=100)。

接下来m行,每行两个正整数u,v(1<=u,v<=n,u!=v),表示第u和第v棵苹果树之间存在一条道路。

Output

若答案为P/Q,则输出一行一个整数,即P*Q^{-1} mod 1000000007(10^9+7)。

Sample Input

3 4 2

2 3 4

1 2

1 2

2 3

3 1

Sample Output

750000011

//期望为5.75=23/4=(23*250000002) mod 1000000007=750000011。


思路

拆开看每个节点的贡献

设\(f_{i,j}\)表示在第j步走到i点的概率

\(f_{i,0}=\frac{d_i}{2m}\)

那么\(f_{i,1}=\sum_{i,j\in E}\frac{f_{j,0}}{d_j}=\frac{d_i}{2m}\)

所以得到\(f_{i,j\in[0,k]}=\frac{d_i}{2m}\)

然后又因为每个树的贡献是\(a_i*\sum_{i=1}^kf_{i,k}=\frac{a_i*d_i*k}{2m}\)

然后就直接算就行了


#include<bits/stdc++.h>

using namespace std;

const int N = 1e5 + 10;
const int Mod = 1e9 + 7; int add(int a, int b) {
return (a += b) >= Mod ? a - Mod : a;
} int mul(int a, int b) {
return 1ll * a * b % Mod;
} int fast_pow(int a, int b) {
int res = 1;
while (b) {
if (b & 1) res = mul(res, a);
b >>= 1;
a = mul(a, a);
}
return res;
} int n, m, k, d[N], a[N]; int main() {
scanf("%d %d %d", &n, &m, &k);
for (int i = 1; i <= n; i++) {
scanf("%d", &a[i]);
}
for (int i = 1; i <= m; i++) {
int u, v; scanf("%d %d", &u, &v);
d[u]++;
d[v]++;
}
int cur = 0;
for (int i = 1; i <= n; i++) {
cur = add(cur, mul(a[i], d[i]));
}
printf("%d", mul(cur, mul(k, fast_pow(m * 2, Mod - 2))));
return 0;
}

最新文章

  1. openresty 前端开发入门一
  2. tomcat下运行多个项目
  3. Spinner学习
  4. UVA 11038 - How Many O&#39;s? 计算对答案的贡献
  5. Windows PAE 寻址
  6. 20140122-Application19事件
  7. 网络环境场景以及模拟工具netem
  8. (C#)Windows Shell 编程系列1 - 基础,浏览一个文件夹
  9. jquery扩展方法案例
  10. linux系统下部署DNS正向解析
  11. Spring 使用介绍(十)—— 单元测试
  12. vue笔记-模板,计算属性,class与style,data属性
  13. 理解JSON对象:JSON.parse、 JSON.stringify
  14. Mysql命令行tab自动补全方法
  15. Qt之QEvent(所有事件的翻译)
  16. PyCharm笔记之配色方案和取消波浪线
  17. 以太坊虚拟机(EVM)
  18. CS190.1x Scalable Machine Learning
  19. 前端性能优化:配置ETag
  20. error occurred during the file system check

热门文章

  1. Android JNI(一)——NDK与JNI基础
  2. cocos2dx 3.13 simulator的问题
  3. 16 Managing Undo
  4. [.NET开发] C#连接MySQL的两个简单代码示例
  5. English trip -- VC(情景课)5 D
  6. linux系统方面的知识
  7. 12月6日 看Active Record validation ; 做jdstore ,注意gem bootstrap 版本只支持bootstrap3。
  8. Oracle11g温习-第一章 2、ORACLE 物理结构
  9. python 爬取京东手机图
  10. JSP内置对象和属性