当前位置: 首页 > news >正文

有向无环图

1804: 有向无环图

Time Limit: 5 Sec     Memory Limit: 128 Mb     Submitted: 751     Solved: 313    


Description

Bobo 有一个 n 个点,m 条边的有向无环图(即对于任意点 v,不存在从点 v 开始、点 v 结束的路径)。
为了方便,点用 1,2,…,n 编号。 设 count(x,y) 表示点 x 到点 y 不同的路径数量(规定 count(x,x)=0),Bobo 想知道
 
除以 (109+7) 的余数。
其中,ai,bj 是给定的数列。
 

Input

输入包含不超过 15 组数据。
每组数据的第一行包含两个整数 n,m (1≤n,m≤105).
接下来 n 行的第 i 行包含两个整数 ai,bi (0≤ai,bi≤109).
最后 m 行的第 i 行包含两个整数 ui,vi,代表一条从点 ui 到 vi 的边 (1≤ui,vi≤n)。
 

Output

对于每组数据,输出一个整数表示要求的值。

Sample Input

3 3
1 1
1 1
1 1
1 2
1 3
2 3
2 2
1 0
0 2
1 2
1 2
2 1
500000000 0
0 500000000
1 2

Sample Output

4
4
250000014

Hint

Source

湖南省第十二届大学生计算机程序设计竞

 

//叉姐还是厉害啊,水题都比较考思维,有向无环图,要是把入度为零的点提起来,其实挺像树的。。。(图论渣渣的想法)

先小范围想想,很简单,用该点的 a[i] 乘所有子节点 b[i] 即可,再把子节点的所有所有 b[i] 累加

这样,又可以把这个当做新节点,同上处理

 

 1 # include <cstdio>
 2 # include <cstring>
 3 # include <cstdlib>
 4 # include <iostream>
 5 # include <vector>
 6 # include <queue>
 7 # include <stack>
 8 # include <map>
 9 # include <bitset>
10 # include <sstream>
11 # include <set>
12 # include <cmath>
13 # include <algorithm>
14 #pragma comment(linker,"/STACK:102400000,102400000")
15 using namespace std;
16 #define LL          long long
17 #define lowbit(x)   ((x)&(-x))
18 #define PI          acos(-1.0)
19 #define INF         0x3f3f3f3f
20 #define eps         1e-8
21 #define MOD         1000000007
22 
23 inline int scan() {
24     int x=0,f=1; char ch=getchar();
25     while(ch<'0'||ch>'9'){if(ch=='-') f=-1; ch=getchar();}
26     while(ch>='0'&&ch<='9'){x=x*10+ch-'0'; ch=getchar();}
27     return x*f;
28 }
29 inline void Out(int a) {
30     if(a<0) {putchar('-'); a=-a;}
31     if(a>=10) Out(a/10);
32     putchar(a%10+'0');
33 }
34 #define MX 100005
35 /**************************/
36 int n,m;
37 LL ans;
38 int a[MX];
39 int b[MX];
40 vector<int> G[MX];
41 bool vis[MX];
42 int w[MX];
43 
44 void dfs(int x)
45 {
46     vis[x]=1;
47     w[x]=b[x];
48     for (int i=0;i<G[x].size();i++)
49     {
50         if (!vis[G[x][i]]) dfs(G[x][i]);
51 
52         w[x]= (w[x] + w[G[x][i]])%MOD;
53         ans = ((ans + (LL)a[x]*w[G[x][i]])%MOD)%MOD;
54     }
55 }
56 
57 int main()
58 {
59     while (scanf("%d%d",&n,&m)!=EOF)
60     {
61         for (int i=1;i<=n;i++)
62         {
63             a[i] = scan();
64             b[i] = scan();
65         }
66         for (int i=1;i<=m;i++) G[i].clear();
67         for (int i=1;i<=m;i++)
68         {
69             int u,v;
70             u = scan(); v = scan();
71             G[u].push_back(v);
72         }
73         memset(vis,0,sizeof(vis));
74 
75         ans = 0;
76         for (int i=1;i<=n;i++)
77         {
78             if (!vis[i]) dfs(i);
79         }
80         printf("%lld\n",ans);
81     }
82     return 0;
83 }
View Code

 

 

 

转载于:https://www.cnblogs.com/haoabcd2010/p/7354933.html

相关文章:

  • linux服务器集群运维经验
  • jsbeautifier + JScript.NET/JavaScript 编程实现 JavaScript、HTML、CSS 代码格式化脚本命令行工具 并集成到 EditPlus...
  • Python实现简单接口自动化测试
  • Codeforces Round #428 (Div. 2)
  • 【转】搜索算法的剪枝优化
  • vue.js过渡效果之--javascript钩子
  • 吓死猪队友 只用命令行登录Windows就问你怕不怕!
  • 从零开始学习Sencha Touch MVC应用之十四
  • 四 APPIUM GUI讲解(Windows版)(转)
  • net user使用
  • 如何在Ubuntu上使用Grafana监控Docker
  • 电脑快捷键
  • 字符合并[HAOI2016]
  • love——sir thomas browne
  • 开源 java CMS - FreeCMS2.6 积分记录
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • java2019面试题北京
  • Javascripit类型转换比较那点事儿,双等号(==)
  • Java程序员幽默爆笑锦集
  • java小心机(3)| 浅析finalize()
  • Kibana配置logstash,报表一体化
  • MySQL-事务管理(基础)
  • MySQL主从复制读写分离及奇怪的问题
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • webpack入门学习手记(二)
  • 阿里云前端周刊 - 第 26 期
  • 代理模式
  • 工作手记之html2canvas使用概述
  • 思考 CSS 架构
  • 移动端唤起键盘时取消position:fixed定位
  • 国内开源镜像站点
  • 积累各种好的链接
  • 如何正确理解,内页权重高于首页?
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • #stm32驱动外设模块总结w5500模块
  • (2)nginx 安装、启停
  • (function(){})()的分步解析
  • (ZT)出版业改革:该死的死,该生的生
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (算法)Game
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .NET Framework 4.6.2改进了WPF和安全性
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • :not(:first-child)和:not(:last-child)的用法
  • @KafkaListener注解详解(一)| 常用参数详解
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(白虎组)
  • [.net] 如何在mail的加入正文显示图片
  • [20160902]rm -rf的惨案.txt
  • [android] 天气app布局练习
  • [CSS]文字旁边的竖线以及布局知识