“华为杯“ 武汉大学21级新生程序设计竞赛 J.传闻档案
题目link
思路
反向建图,贪心跑bfs
反向建图权值从大到小跑bfs,来确定当前权值可以到达的点,在正常图(正向建边)中即是能到达它的点,然后开个visvisvis数组记录一下点是否来过,贪心下每个点只更新一次,线性复杂度.
Code
const int inf = 0x3f3f3f3f;
const int INF = ~0ULL;
const int N = 1e6+10;
int n,m;struct node{int id,w;bool operator<(const node&t) const{if(w==t.w) return id < t.id;return w > t.w;}
}a[100005];vector<int>g[100005];
int in[100005];
int f[100005];
bool st[N];
map<int,int> mp;void bfs(int u){queue<int> q;q.push(u);st[u] = 1;while(q.size()){int t = q.front();q.pop();for(auto i:g[t]){if(!st[i]){t = mp[i];a[t].w = max(a[t].w,a[mp[u]].w);st[i] = 1;q.push(i);}}}
}signed main()
{cin>>n>>m;forr(i,1,n) cin >> a[i].w,a[i].id = i;while(m--){int u,v;cin>>u>>v;g[v].push_back(u);}sort(a+1,a+1+n);forr(i,1,n) mp[a[i].id] = i;forr(i,1,n){bfs(a[i].id);}int res = 0;forr(i,1,n) res += a[i].w;cout << res << endl; return 0;
}
Tarjan+dfsTarjan+dfsTarjan+dfs
用tarjantarjantarjan算法缩完点之后直接跑一边dfsdfsdfs,因为tarjantarjantarjan之后强连通分量是逆拓扑序,直接倒着跑一遍dfsdfsdfs更新缩完点之后每个点的最大权值
typedef long long ll;
int pri[16] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53};
const int inf = 0x3f3f3f3f;
const int INF = ~0ULL;
const int N = 1e6+10;
int n,m;
vector<int> g[100005],v[100005],scc[100005];
int dfn[100005],low[100005],id[100005];// id 结点在的强连通分量编号
int tim,cnt; // time 时间戳 cnt 连通分量个数
int stk[100005],top;
bool ins[100005];//是否在栈内
int num[100005];
int w[100005],val[100005];
bool st[100005];
int in[100005];
void tarjan(int u){dfn[u] = low[u] = ++tim;stk[++top] = u,ins[u] = 1;for(auto v:g[u]){if(!dfn[v]){tarjan(v);low[u] = min(low[u],low[v]);}else if(ins[v]) low[u] = min(low[u],low[v]);}if(low[u] == dfn[u]){cnt++;int y;do{y = stk[top--]; id[y] = cnt;ins[y] = 0;scc[cnt].push_back(y);}while(u != y);}
}void dfs(int u){st[u] = 1;for(auto j:v[u]){if(!st[j]) dfs(j);val[u] = max(val[u],val[j]);}
}
signed main()
{cin >> n >> m;forr(i,1,n) cin >> w[i];while(m--){int u,v;cin>>u>>v;g[u].push_back(v);}forr(i,1,n) if(!dfn[i]) tarjan(i);forr(i,1,n){for(auto j:g[i]){if(id[i] != id[j])v[id[i]].push_back(id[j]),in[id[j]]++;}}// forr(i,1,cnt){ // cout << i <<" ";// for(auto j:v[i]) cout << j <<" ";// cout << endl;// }forr(i,1,cnt){int res = 0;for(auto j:scc[i]){res = max(res,w[j]);}val[i] = res;}for(int i = cnt;i;i--) if(!st[i]) dfs(i); // forr(i,1,cnt) cout << val[i] << endl; int res = 0;forr(i,1,cnt) res += scc[i].size()*val[i];cout << res << endl;return 0;
}
“华为杯“ 武汉大学21级新生程序设计竞赛 J.传闻档案相关推荐
- “华为杯“ 武汉大学21级新生程序设计竞赛
"华为杯" 武汉大学21级新生程序设计竞赛_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ (nowcoder.com) D.和谐之树(线段树) #i ...
- “华为杯“武汉大学21级新生程序设计竞赛
"华为杯"武汉大学21级新生程序设计竞赛 比赛传送门 u p d : 2022.4.8 upd:2022.4.8 upd:2022.4.8 补了 I I I题. B题待补. A - ...
- 牛客练习-哈尔滨理工大学21级新生程序设计竞赛(同步赛)
比赛链接:哈尔滨理工大学21级新生程序设计竞赛(同步赛) 文章目录 前言 正文 A.考试周破防 B.咖啡店 C.kiki和bob玩取石子 D.猴王kiki分桃 E.很二的拆分 F.构造字符串 G.信号 ...
- 哈尔滨理工大学21级新生程序设计竞赛(同步赛)错题笔记
目录: 新生赛题目链接 C kiki和bob玩取石子 E 很二的拆分 F 构造字符串 G 信号之旅 H 小球滚动 I kiki看球赛 J 跳一跳 K Jay的小迷弟 L 翻转卡片 新生赛题目链接 C ...
- 浙江中医药大学2018级新生程序设计竞赛题解
[...] 网上代码比较多我就尽量不挂了,简单讲下思路吧. oj : acm.zcmu.edu.cn [Problem A: 画正方形] 签到题,注意下输出格式(组与组之间有且仅有一个空行)就行. 至 ...
- 21级爪哇程序设计新生赛(二)题解
21级爪哇程序设计新生赛(二) 序 A 小爪的数字集合(并查集) B 小爪的得分(博弈) C 小爪的博弈(博弈) D ljc和cyj玩五子棋(模拟) E ljc和雪球(模拟) F LJC的背包(动态规 ...
- 【比赛回顾】2020广工文远知行杯新生程序设计竞赛(初赛)
[比赛回顾]2020广工文远知行杯新生程序设计竞赛(初赛) 写在前面: 已经更新完除E和F以外的题解(因为这两道我没有时间做了,以后抽空做完后补充).可能我的题解并不是最优的,欢迎交流和讨论~ 文章目 ...
- 广东工业大学文远知行杯新生程序设计竞赛(重现赛)复习
广东工业大学文远知行杯新生程序设计竞赛(重现赛) 1,F,亚子和燐子的game 思路: 我们可以维护一个堆(里面的数都相等,其实就是一个数),每扔进去一个数,就继续维持堆中数字相等(维持方法,就是谁大 ...
- 2020年广东工业大学第十届文远知行杯新生程序设计竞赛(同步赛)G.排解忧伤
2020年广东工业大学第十届文远知行杯新生程序设计竞赛(同步赛)G.排解忧伤 题目链接 题目描述 猪猪参加小米赞助的icpc比赛之后惨遭打铁,为了排解忧伤,他开始观察嘉宾席. 嘉宾席是间隔为1,一字排 ...
最新文章
- java进度条字体颜色_java – Nimbus LF – 改变进度条的背景颜色
- 一般项目中是如何调bug的 ------- 手把手带你体验整个流程
- boost::histogram::algorithm::reduce用法的测试程序
- 小于n与n互质的所有数的和(欧拉函数+快速幂)
- 《数据库原理与应用》(第三版)第15章 备份和恢复数据库 基础 习题参考答案
- TechEd2007现场侧记:TechEd的变与不变
- Orace用户创建及权限分配
- mysql负载均衡分区_分区和负载均衡让MySQL更大更好
- 习题3.5 求链表的倒数第m个元素 (20 分)
- python零基础学习书-零基础学习python推荐几本书?
- 6.1(数学:五角数)
- 一款简洁大气的个人主页源码
- 我曾做过陈士成,也做过孔乙己,还做过阿Q
- Java零基础学习-API每日单词(日更)
- 句法分析 依存句法分析
- 微信云控的大触来一下
- 视频封装格式篇--MP4
- MATLAB绘制二元函数图像
- [论文笔记] Sigcomm 2018 Elastic Sketch: Adaptive and Fast Network-wide Measurements
- 04_从啤酒与尿布,聊关联规则推荐
热门文章
- 程序员每天累成狗,是为了什么?
- 图像标注工具-LabelImg
- Android仿头条频道管理
- ide怎么设置方法中间加一道横线_word文档编辑:如何快速设置批量脚注?
- 光学efl_EFL投影式光固化生物3D打印四大亮点
- 让阿宅不再寂寞的聊天机器人
- 安卓模拟器介绍及其快速启动的解决方案
- 报错:[plugin:vite:import-analysis] Failed to resolve import “./Child“ from “src\views\home.vue“. Doe
- MySql 不存在则插入,存在则更新或忽略
- windows7 default桌面,winlogon桌面和screensaver桌面的截屏