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

《P2656 采蘑菇》

题目描述

小胖和 ZYR 要去 ESQMS 森林采蘑菇。

ESQMS 森林间有 N 个小树丛,M 条小径,每条小径都是单向的,连接两个小树丛,上面都有一定数量的蘑菇。小胖和 ZYR 经过某条小径一次,可以采走这条路上所有的蘑菇。由于 ESQMS 森林是一片神奇的沃土,所以一条路上的蘑菇被采过后,又会长出一些新的蘑菇,数量为原来蘑菇的数量乘上这条路的“恢复系数”,再下取整。

比如,一条路上有 4 个蘑菇,这条路的“恢复系数”为 0.7,则第一~四次经过这条路径所能采到的蘑菇数量分别为 4,2,1,0。

现在,小胖和 ZYR 从 S 号小树丛出发,求他们最多能采到多少蘑菇。

输入格式

第一行两个整数,N 和 M。

第二行到第 M+1 行,每行四个数,分别表示一条小路的起点,终点,初始蘑菇数,恢复系数。

第 M+2 行,一个整数 S。

输出格式

一行一个整数,表示最多能采到多少蘑菇,保证答案不超过 (231−1)。

输入输出样例

输入 #1复制

3 3
1 2 4 0.5
1 3 7 0.1
2 3 4 0.6
1

输出 #1复制

8

说明/提示

对于 30% 的数据,N≤7,M≤15

另有 30% 的数据,满足所有“恢复系数”为 0。

对于 100% 的数据,1≤N≤8×104,1≤M≤2×105,0≤恢复系数≤0.8 且最多有一位小数, 1≤S≤N。

代码实现:

#include<bits/stdc++.h>
#define MAXN 80005
using namespace std;struct E{int v, w, r;E(int _v, int _w, int _r) : v(_v), w(_w), r(_r) {}
};vector<E> G[MAXN], G2[MAXN];
stack<int> st;
int dfn[MAXN], low[MAXN], scc[MAXN];
int val[MAXN], dis[MAXN];
int cnt, idx;
int n, m, s, ans;void tarjan(int u) {dfn[u] = low[u] = ++idx;st.push(u);for (int i = 0; i < G[u].size(); i++) {int v = G[u][i].v;if (!dfn[v]) {tarjan(v);low[u] = min(low[u], low[v]);} else if (!scc[v]) {low[u] = min(low[u], dfn[v]);}}if (low[u] == dfn[u]) {cnt++;while (1) {int v = st.top(); st.pop();scc[v] = cnt;if (u == v) break;}}
}void findscc() {cnt = idx = 0;for (int i = 1; i <= n; i++)if (!dfn[i])tarjan(i);
}void bfs() {queue<int> q;q.push(s);dis[s] = val[s];while (!q.empty()) {int u = q.front(); q.pop();for (int i = 0; i < G2[u].size(); i++) {int v = G2[u][i].v;if (G2[u][i].w + dis[u] + val[v] > dis[v]) {dis[v] = G2[u][i].w + dis[u] + val[v];q.push(v);}}}
}int main() {cin >> n >> m;int u, v, w;double r;for (int i = 0; i < m; i++) {cin >> u >> v >> w >> r;G[u].push_back(E(v, w, r * 10.0));}cin >> s;findscc();for (int i = 1; i <= n; i++) {for (int j = 0; j < G[i].size(); j++) {int v = G[i][j].v;if (scc[i] == scc[v]) {int t = G[i][j].w;while (t != 0) {val[scc[i]] += t;t = t * G[i][j].r / 10;}} else {G2[scc[i]].push_back(E(scc[v], G[i][j].w, 0));}}}s = scc[s];bfs();for (int i = 1; i <= cnt; i++) ans = max(ans, dis[i]);cout << ans << endl;return 0;
}

http://www.dtcms.com/a/558065.html

相关文章:

  • 做网站每年需付费吗河南省建设人才信息网官网
  • 做网站要用到数据库吗文网文网站建设
  • 网站策划流程专业做婚庆的网站
  • 中国住房建设部网站wordpress后台拿shell
  • day96—双指针—长按键入(LeetCode-925)
  • 本地部署 Spring AI 完全指南:从环境搭建到实战落地
  • 外贸服装网站建设高邮网站建设
  • 建设电子商务网站期末考试网站开发需求表
  • 如何利用QuickAPI管理企业数据库的API生命周期并提升数据安全
  • 做自媒体网站开发番禺网站开发设计
  • Verilog和FPGA的自学笔记9——呼吸灯
  • @RestController注解
  • 门户网站英文郑州网站模板建设
  • LVS负载均衡集群理论
  • 关于高校网站建设论文的总结网络优化基础知识
  • 规则引擎Drools语法要点
  • 柘林网站建设公司推广做哪个网站
  • 校园网站建设情况统计表logo标志
  • UVa 10396 Vampire Numbers
  • 关于网站建设的指标河北城乡和住房建设厅官方网站
  • 【图像】图像的颜色深度(Color Depth)和存储格式(File Format)
  • docker镜像国内的仓库地址
  • 汕头企业网站建设价格seo外贸 网站公司推荐
  • 跟着deepseek减肥
  • 深圳盐田网站建设wordpress vr主题公园
  • 未来软件网站建设财经网站直播系统建设
  • 预测海啸:深入探索地震模式(2001-2022年)
  • 【AutoHotkey】(解决记录)AHK安装后脚本显示运行实际没执行(最简单的测试用脚本)
  • 智慧教室解决方案(3)PPT(48页)
  • 个人作品集网站wordpress置顶重复