/*
csu 1804
因为define和const总出错,到现在也不明白为什么 不知道define 和 const 出来的 mod 有什么区别
*/
#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
using namespace std;
const int mod = 1000000000+7;
long long ans[100000+10];
long long a[100000+10];
long long b[100000+10];
long long d[100000+10];//d[i]代表入度
vector<int>e[100000+10];
int main()
{
int n,m;
while(scanf("%d%d",&n,&m)!=EOF)
{
for(int i=0;i<=n;i++)
{
e[i].clear(); }
queue<int>q;
memset(ans,0,sizeof(ans));
memset(d,0,sizeof(d));
for(int i=1;i<=n;i++)
{
scanf("%lld%lld",&a[i],&b[i]);
}
int u,v;
for(int i=0;i<m;i++)
{
scanf("%d%d",&u,&v);
e[v].push_back(u);
d[u]++;
}
for(int i=1;i<=n;i++)
{
if(d[i]==0)
q.push(i);
}
while(!q.empty())
{
int to=q.front();
q.pop();
for(int i=0;i<e[to].size();i++)
{
int from=e[to][i];
ans[from]=(ans[from]+(ans[to]+b[to])%mod)%mod;
if(--d[from]==0)
{
q.push(from);
}
}
}
long long sum=0;
for(int i=1;i<=n;i++)
{
sum=(sum+ans[i]*a[i]%mod)%mod;
}
printf("%lld\n",sum); }
return 0;
}

  

csu1804的更多相关文章

  1. 2016 湖南省省赛B题《有向无环图》

    题目链接[https://vjudge.net/problem/CSU-1804] 题意: 给出一个有向无环图,然后让你算下面的结果,count(i,j)表示i->j之间的路径条数. 题解: 根 ...

随机推荐

  1. join,left join,inner join,full join的区别?

    left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录inner join(等值连接) 只 ...

  2. java学习--修饰符

    Java语言提供了很多修饰符,主要分为以下两类: 访问修饰符 非访问修饰符 访问控制修饰符 访问控制修饰符用来修饰类和类内部的成员变量和成员方法,来确定其访问权限 类的访问控制修饰符只有两种 defa ...

  3. js数值大小判断的错误

    1.js中定义一个变量i,判断i的取值在[1,3]中的错误写法 if(1<= i <= 3) 假设js的值为4,浏览器在解析js时会先将1与4比较 ,显然1<= 4,返回结果为1,然 ...

  4. Windows下pip 离线包安装

    pip在线安装十分方便,有时候某些服务器并没有直接联网,需要下载好安装包上传到服务器上进行安装,不经常用,还是有点小麻烦的. 安装Python之后,将下载好的安装包包放在Python安装的根目录下使用 ...

  5. query did not return a unique result: 2错误的发生

    org.springframework.dao.IncorrectResultSizeDataAccessException: query did not return a unique result ...

  6. Maven下Spring + SpringMvc + Hibernate4 配置实例

    1. 开发环境 IDEA 2. 在pom.xml中配置引用相关的包. <properties> <junit.version>4.10</junit.version> ...

  7. S19 文件详解

    http://blog.csdn.net/finewind/article/details/5483554

  8. 5. Go函数

    [定义函数] 直接上一个栗子,Go语言定义函数: func add(a int, b int) int { return a + b } 一目了然,还不太习惯Go语言的命名方式, 类型为什么要写到后面 ...

  9. LeetCode Smallest Range

    数据范围是3500,3500也就是说n的平方是可以接受的.这里告诉你就是有序的,也就是在提醒你可能会是一个类似于二分的算法,所以的话其实基于这两个认识的话我们就可以利用一个枚举叫二分的算法来解决这道题 ...

  10. Shell 运算相关

    一.${str} 二.变量替换 三.3种计算字符串长度的效率比较 四.(())用法 五.expr 六.bc 4种连续整数求和效率 七.条件测试 八.字符串测试