首先请允许我吐槽一下这个题面

这个题面透露出血腥与暴力,电影院里还藏汽油

所以情侣们,要是想看电影就在家里看吧

毕竟出来容易被烧

在家里看虽然观影效果不如在电影院里

但是,

起码咱生命安全啥的有保障啊

题面

思路:

tarjan

注意方案数是乘法原理

#include <cstdio>
#include <iostream>
using namespace std;
const int N = 1e6+;
const int md = 1e9+;
int n, head[N << ], cnt, w[N], m, dfn[N], low[N], tot, top, stac[N], ans, minn, sum = , geshu;
bool vis[N];
struct node {
int nxt, to;
}e[N << ];
int read() {
int s = , w = ;
char ch = getchar();
while(!isdigit(ch)) {if(ch == '-') w = -; ch = getchar();}
while(isdigit(ch)) {s = s * + ch - ''; ch = getchar();}
return s * w;
}
void add(int x, int y) {
e[++cnt].nxt = head[x];
e[cnt].to = y;
head[x] = cnt;
}
void tarjan(int u) {
dfn[u] = low[u] = ++tot, stac[++top] = u, vis[u] = ;
for(int i = head[u]; i; i = e[i].nxt) {
int v = e[i].to;
if(!dfn[v]) tarjan(v), low[u] = min(low[u], low[v]);
else if(vis[v]) low[u] = min(low[u], dfn[v]);
}
if(dfn[u] == low[u]) {
geshu = , minn = 0x3f3f3f3f;
while(stac[top] != u) {
vis[stac[top]] = ;
if(w[stac[top]] < minn) minn = w[stac[top]], geshu = ;
if(w[stac[top--]] == minn) geshu++;
}
top--, vis[u] = ;
if(w[u] < minn) minn = w[u], geshu = ;
else if(w[u] == minn) geshu++;
ans += minn;
sum = (sum * geshu) % md;
}
}
int main() {
n = read();
for(int i = ; i <= n; i++) w[i] = read();
m = read();
for(int i = , x, y; i <= m; i++) {
x = read(), y = read();
add(x, y);
}
for(int i = ; i <= n; i++)
if(!dfn[i]) tarjan(i);
printf("%d %d\n", ans, sum);
return ;
}

谢谢收看, 祝身体健康!

最新文章

  1. mysql半同步(semi-sync)源码实现
  2. beaglebone black 安装QNX过程
  3. C++算法实源码分析
  4. hibernate缓存机制详细分析 复制代码 内部资料 请勿转载 谢谢合作
  5. XML组成结构以及C#通过DTD验证规范性
  6. Tyvj P1175 机器人
  7. JS生成随机数的各种函数
  8. 根据不同的实体及其ID来获取数据库中的数据
  9. 查看SQL SERVER数据库运行参数和连接数
  10. DigitalOcean上使用Tornado+MongoDB+Nginx+Supervisor+DnsPod快速搭建个人博客
  11. Help Viewer 2.2 独立运行
  12. 面试题52:缺少i的乘积数组
  13. hibernate配置之&lt;property name=&quot;hbm2ddl.auto&quot;&gt;create&lt;/property&gt;导致每次创建SessionFactory都清空数据库中的数据
  14. Best Time to Buy and Sell Stock III 解答
  15. HDU 5972 Regular Number(ShiftAnd+读入优化)
  16. FZU 1894 志愿者选拔 单调队列
  17. jmeter参数化随机取值实现
  18. [CTSC2008]网络管理 [整体二分]
  19. MySQL 初识别语句,数据库、表、行的增删改查
  20. 2017-9-17-MDIO信号线串联小电阻作用【转】

热门文章

  1. TCP的三次握手与四次挥手理解
  2. Mac流程图的软件
  3. 连接树莓派中的MySQL服务器
  4. Focal Loss 理解
  5. 专栏《Elasticsearch 7.x从入门到精通》的相关源代码
  6. App_Code下类无法引用问题
  7. C#写日志工具类
  8. @property与@xxx.setter的用法
  9. RabbitMQ、RPC、SaltStack &quot;贡&quot;具的使用
  10. opencv::KMeans图像分割