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

MC0364魔法链路

码蹄集OJ-魔法链路

MC0364・魔法链路

难度:黄金 时间限制:1 秒 占用内存:256 M 收藏 报错

小码妹学会了多重施法,也就是同时施放多个法术的能力,然而多重施法中每个最终施放的法术都需要一些前置的法力运转,这些中间的法力运转过程被称为魔法链路。

小码妹的魔法链路可以看作一个有向无环图(DAG),其中的每一个节点都可以看作一次法力运转,出度为 0 的节点则是一次最终施放的法术(法术也被视为一次法力运转)。每次法力运转都有一个魔力值wi​,每次法力运转都会获得其前置法力运转积累的魔力值以增加威力。

由于对多重施法的掌握并不熟练,小码妹不能很快知道自己进行法力运转的顺序,以及最终施放出的法术的威力,你能帮帮她吗?

小码妹喜欢有序的序列,所以她希望施放法力运转的最终顺序是字典序最小的。

格式

输入格式:第一行包含两个整数n,m(1≤n≤105,1≤m≤2×105),n表示法力运转的个数,m表示魔法链路的边数;
第二行包含n个整数,wi​(1≤wi​≤105)表示节点i的魔力值;
接下来m行,每行包含两个整数ui​,vi​,表示一条ui​到vi​的边。

输出格式:输出包含两行,第一行包含n个整数,为法力运转的最终顺序。
第二行包含每个最终施放法术的威力,按最终法术节点编号从小到大输出。

样例 1

输入

5 5
1 2 3 4 5
1 2
1 3
2 4
3 4
3 5

输出

1 2 3 4 5
11 9
备注

样例说明
最终施放的法术为 4,5。
施放法术 4 需要法力运转 2,3,法力运转 2,3 均会获得法力运转 1 的 1 点魔力值,所以施放法术 4 的威力为(1+2)+(1+3)+4=11。
施放法术 5 需要法力运转 3,法力运转 3 会获得法力运转 1 的 1 点魔力值,所以施放法术 3 的威力为1+3+5=9。

本题相关知识点: 图论:拓扑排序

代码:
 

#include<bits/stdc++.h> 
using namespace std;
const int N = 1e5+10;
vector <int> G[N];
int val[N],ru[N],chu[N];
int n,m;
int main( )
{priority_queue <int,vector<int>,greater<int>> qp;cin >> n >> m;for(int i = 1 ; i <= n ; i++){cin >> val[i];	}for(int i = 1 ; i <= m ; i++){int u,v;cin >> u >> v;G[u].push_back(v);ru[v]++;chu[u]++;}for(int i = 1 ; i <= n ; i++){if(ru[i] == 0){qp.push(i);}}while(!qp.empty()){int cur = qp.top();qp.pop();cout << cur << " ";for(auto to : G[cur]){val[to] += val[cur];ru[to]--;if(ru[to] == 0){qp.push(to);}}} cout << endl;for(int i = 1 ; i <= n ; i++){if(chu[i] == 0)cout << val[i] << " ";}return 0;
}

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

相关文章:

  • 全排列(回溯算法)
  • OLTP,OLAP,HTAP是什么,数据库该怎么选
  • 力扣-230.二叉搜索树中第K小的元素
  • 【学习笔记】MySQL技术内幕InnoDB存储引擎——第6章 锁
  • Amazon Q Developer:AI 增强编码生产力的未来
  • Arpg第二章——流程逻辑
  • 第六章第二节 定时器定时中断 定时器外部时钟
  • 电子病历:现代HIS系统不可或缺的核心组成部分
  • 12:java学习笔记:多维数组1
  • yolo为什么可以作为目标检测框架?它的底层原理是什么?
  • 客流人数统计准确率↑22%:陌讯动态追踪融合算法实战解析
  • 【高等数学】第七章 微分方程——第七节 常系数齐次线性微分方程
  • OSPF综合实验(一)
  • 分享一个可以测试离线服务器性能的脚本
  • 八股训练--JUC
  • 包装类、日期等常用类型
  • C语言数据结构(5)双向链表
  • 深入剖析Nacos:云原生架构的基石
  • Python编程基础与实践:Python基础数据类型入门
  • 中国工程院郑裕国院士确认出席:2025第五届生物发酵营养源高峰论坛生物发酵展
  • CMake基础使用指南
  • QtC++ 调用 tesseract开源库 搭配 Opencv 实现文字识别:从tesseract库基本介绍到实际应用实现
  • 【华为OD机试】计算图形面积
  • 关于Egret引擎的一些思考
  • 单位长度上的RC参数
  • 【补题】Codeforces Round 715 (Div. 1) B. Almost Sorted
  • linux中pthread_t 的值与top -Hp中线程id值的区别
  • 装 饰 器 模 式
  • 深入 Go 底层原理(七):逃逸分析
  • C++ 11 模板萃取