HNCPC 2016 湖南省程序设计竞赛 有向无环图
来源:互联网 发布:国内云计算市场份额 编辑:程序博客网 时间:2024/06/05 19:14
题目链接
http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1804
题意
中文题:给个含有n个点的有向无环图,计算ans:
long long ans=0;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)ans+=count(i,j)*a[i]*b[j];
count(i,j) 代表结点I到j可走路的条数。
思路
拓扑排序,因为是有向无环图,所以应该要找到入度为0的点,沿着这点所到的点,入度为0的点都能到达,将入度为0的点的a[i] ”传递“到它能直接到达的点,累加过去。
#include<cstdio>#include<queue>#include<iostream>#include<vector>#include<map>#include<cstring>#include<string>#include<set>#include<stack>#include<algorithm>#define cle(a) memset(a,0,sizeof(a))#define inf(a) memset(a,0x3f,sizeof(a))#define ll long long#define Rep(i,a,n) for(int i=a;i<=n;i++)using namespace std;#define INF2 9223372036854775807llconst int INF = ( 2e9 ) + 2;const ll maxn = 1e5+10;int d[maxn],a[maxn],b[maxn],In[maxn];vector<int> g[maxn];const int mod = 1e9+7;ll topsort(int n){ ll ans=0; priority_queue<int> q; for(int i=1;i<=n;i++) { if(In[i]==0) { q.push(i); } } while(!q.empty()) { int u=q.top();q.pop(); d[u]=(d[u]+a[u])%mod; for(int i=0,L=g[u].size();i<L;i++) { int v=g[u][i]; In[v]--; d[v] = (d[u]+d[v])%mod; if(In[v]==0) q.push(v); ans = (ans+1LL*d[u]*b[v])%mod; } } return ans%mod;}int main(){ int n,m; while(~scanf("%d%d",&n,&m)) { for(int i=1;i<=n;i++)g[i].clear(); memset(In,0,sizeof(In)); memset(d,0,sizeof(d)); for(int i=1;i<=n;i++) scanf("%d%d",&a[i],&b[i]); for(int i=0;i<m;i++) { int u,v; scanf("%d%d",&u,&v); g[u].push_back(v); In[v]++; } ll ans=topsort(n); cout<<ans<<endl; }}
阅读全文
0 0
- HNCPC 2016 湖南省程序设计竞赛 有向无环图
- HNCPC 2016 湖南省程序设计竞赛 F
- 【拓扑】【宽搜】CSU 1084 有向无环图 (2016湖南省第十二届大学生计算机程序设计竞赛)
- 2016年湖南省第十二届大学生计算机程序设计竞赛:B—有向无环图
- CSU 1804 有向无环图【湖南省第十二届大学生计算机程序设计竞赛 B题 DAG】
- 拓扑排序——有向无环图(湖南省第十二届大学生计算机程序设计竞赛 B)
- CSU-1804 有向无环图(拓扑排序+dp)(湖南省第十二届大学生程序设计竞赛)
- 湖南省2016程序设计竞赛
- CSU 1804 有向无环图 (DP+拓扑排序) 【湖南省第十二届大学生计算机程序设计竞赛 - B】
- 2017湖南省程序设计竞赛
- 2016湖南省省赛B-有向无环图(CSU1804)
- 湖南省赛 有向无环图 水dp
- 2016年湖南省第十二届大学生计算机程序设计竞赛
- 2016年湖南省第十二届大学生计算机程序设计竞赛
- 湖南省第十二届大学生计算机程序设计竞赛 A 2016
- 2016湖南省第十二届大学生程序设计竞赛(题解)
- 湖南省第十二届大学生计算机程序设计竞赛 2016
- 2016年湖南省第十二届大学生计算机程序设计竞赛
- 洛谷 P2184 贪婪大陆( 树状数组的活用 )
- NOIP2014 D2T3 解方程 BZOJ3751 UOJ20 数论 秦九韶算法 玄学
- 溢出覆盖返回地址实现攻击
- 【学生】知识总结
- (十二)命令模式详解(故事版)
- HNCPC 2016 湖南省程序设计竞赛 有向无环图
- 机器学习入门笔记(三)----Octave简单使用
- 几种排序以及其时间复杂度
- 数据结构与算法_KMP算法
- 字符设备驱动
- Spring Cloud Eureka+Ribbon+Hystrix
- Luogu 3919(主席树)
- python 微信 itchat
- CF808C