[CSU 1803(湖南省赛16)] 有向无环图 (DAG+公式化简)
来源:互联网 发布:芒果tv没有mac版 编辑:程序博客网 时间:2024/06/05 07:35
CSU - 1803 (湖南省赛16)
给定一个
n 个点的有向无环图,
定义count(u,v) 为u 到v 的路径方案数
求∑i=1n∑j=1ncount(i,j)×ai×bj
其中ai 与bj 为给定的数列,并且count(u,u)=0
先考虑
首先它只与所有能到
虽然不能枚举所有这样的
那么对于在
最后再将这个和乘以
所以按拓扑序枚举每一个
为其所有前继的权值加上前继的
最后乘以
#pragma comment(linker, "/STACK:102400000,102400000")#include <cstdio>#include <iostream>#include <cstdlib>#include <cstring>#include <algorithm>#include <cmath>#include <cctype>#include <map>#include <set>#include <queue>#include <bitset>#include <string>#include <complex>using namespace std;typedef pair<int,int> Pii;typedef long long LL;typedef unsigned long long ULL;typedef double DBL;typedef long double LDBL;#define MST(a,b) memset(a,b,sizeof(a))#define CLR(a) MST(a,0)#define SQR(a) ((a)*(a))#define PCUT puts("\n----------")const int maxn=1e5+10, MOD=1e9+7;struct Graph{ int ndn,edn,last[maxn],ind[maxn]; int u[maxn], v[maxn], nxt[maxn]; void init(int _n){ndn=_n; edn=0; MST(last,-1); CLR(ind);} void adde(int _u, int _v) { u[edn]=_u; v[edn]=_v; nxt[edn]=last[_u]; last[_u]=edn++; ind[_v]++; }};int N,M,A[maxn],B[maxn],V[maxn];Graph G;int main(){ #ifdef LOCAL freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout); #endif while(~scanf("%d%d", &N, &M)) { CLR(V); G.init(N); for(int i=1; i<=N; i++) scanf("%d%d", &A[i], &B[i]); for(int i=1,u,v; i<=M; i++) { scanf("%d%d", &u, &v); G.adde(u,v); } int ans=0; queue<int> que; for(int i=1; i<=N; i++) if(!G.ind[i]) que.push(i); while(que.size()) { int u=que.front(); que.pop(); ans = ((LL)ans + (LL)V[u]*B[u])%MOD; for(int e=G.last[u],v; ~e; e=G.nxt[e]) { v=G.v[e]; V[v] = ((LL)V[v] + (LL)V[u] + A[u]) %MOD; G.ind[v]--; if(!G.ind[v]) que.push(v); } } printf("%d\n", ans); } return 0;}
0 0
- [CSU 1803(湖南省赛16)] 有向无环图 (DAG+公式化简)
- CSU 1804 有向无环图【湖南省第十二届大学生计算机程序设计竞赛 B题 DAG】
- CSU 1803 2016(16湖南省赛)(同余定理)
- CSU 1804 有向无环图 (DP+拓扑排序) 【湖南省第十二届大学生计算机程序设计竞赛 - B】
- 2016湖南省省赛B-有向无环图(CSU1804)
- 图算法--有向无环图(DAG)
- DAG图(有向无环图)
- csu 1803 16年湖南省赛
- DAG有向无环图
- DAG 有向无环图
- 有向无环图DAG
- 湖南省赛 有向无环图 水dp
- [CSU 1803(湖南省赛16)] 2016 (数论+模运算)
- CSU-1804 有向无环图(拓扑排序+dp)(湖南省第十二届大学生程序设计竞赛)
- 【拓扑】【宽搜】CSU 1084 有向无环图 (2016湖南省第十二届大学生计算机程序设计竞赛)
- 有向无环图(DAG)的最小路径覆盖
- 有向无环图(DAG)的最小路径覆盖
- 有向无环图(DAG)的最小路径覆盖
- 大数相加
- 在html中使用javascript注意事项
- Android——Tomcat版本更新下载+头像照片上传到Tomcat
- office 2010 Word,Excel的功能区突然消失了
- 消息队列入门(二)消息队列的规范和开源实现
- [CSU 1803(湖南省赛16)] 有向无环图 (DAG+公式化简)
- 【Visual C++】一些开发心得与调试技巧
- 《Effective C++》学习总结
- Eclipse安装svn插件的几种方式
- leetcode_easy 344、reverse string
- 11 安卓各种弹窗总结和代码例子
- 数论的巴拉拉魔法大门就此打开,请收下这波来自数论的友好邀请信,准备变身各位小魔仙噗哈哈哈哈
- 阿里云云虚拟主机上个人网站的Https访问配置
- 消息队列入门(三)JMS标准及实现