题目链接

比赛场上是暴力怼过去的,回来补题学了个优先队列的想法

因为宝石的合成情况可能有嵌套,比如1和2生成3,1和3生成2,2和3生成1,如果用dp去做的话,那么就会形成一个回路,就没办法当做树形dp搞了

所以我们要想到,如果出现了某个生成环,那么其环三个元素中,魔力值最小的那个一定不可被更新,所以这个环本质上是不影响我们最终最优值的

因此,我们只需要构造一个优先队列,按照所有宝石的魔力值从小到大排序,依次出队列依次对其他点进行更新即可

#include<bits/stdc++.h>
using namespace std;const int maxn=1e5+500;
struct node{int value,id;friend bool operator < (const node &a,const node &b){return a.value < b.value;}
}a[maxn];priority_queue<node> q;struct Edge{int a,b,c,nxt;
}edge[maxn*2];
int head[maxn],tot;
int T,n,m;
int dp[maxn];void addedge(int a,int b,int c){edge[tot].a=a;edge[tot].b=b;edge[tot].c=c;edge[tot].nxt=head[a];head[a]=tot++;
}
int main(){scanf("%d",&T);while(T--){while(!q.empty()) q.pop();scanf("%d%d",&n,&m);memset(head,-1,sizeof(head));tot=0;for(int i=1;i<=n;i++){scanf("%d",&a[i].value);a[i].id=i;q.push(a[i]);dp[i]=a[i].value;}int x,y,z;while(m--){scanf("%d%d%d",&x,&y,&z);addedge(x,y,z);addedge(y,x,z);}while(!q.empty()){node t=q.top();int u=t.id;q.pop();for(int i=head[u];i!=-1;i=edge[i].nxt){int v=edge[i].b;int w=edge[i].c;if (dp[u]+dp[v]<dp[w]){dp[w]=dp[u]+dp[v];node tp;tp.id=w;tp.value=dp[w];q.push(tp);}}}for(int i=1;i<=n;i++)printf("%d%c",dp[i],i==n?'\n':' ');}return 0;
}

HAUTOJ 1262魔法宝石 优先队列相关推荐

  1. HAUTOJ 1262: 魔法宝石 24行代码

    1262: 魔法宝石 时间限制: 2 秒  内存限制: 64 MB 提交: 332  解决: 77 提交 状态 题目描述 小s想要创造n种魔法宝石.小s可以用ai的魔力值创造一棵第i种魔法宝石,或是使 ...

  2. HAUTOJ 1262 魔法宝石

    题目链接:HAUTOJ 1262 很简单的一道题 就是注意 需要循环N次 直到最小的不再发生变化 #include<iostream> using namespace std; int m ...

  3. hautoj 1262 魔法宝石【最短路】

    点击打开链接 时间限制: 2 秒  内存限制: 64 MB 提交: 510  解决: 150 提交 状态 题目描述 小s想要创造n种魔法宝石.小s可以用ai的魔力值创造一棵第i种魔法宝石,或是使用两个 ...

  4. 1262: 魔法宝石

    http://218.28.220.249:50015/JudgeOnline/problem.php?id=1262 1262: 魔法宝石 时间限制: 2 秒  内存限制: 64 MB 提交: 37 ...

  5. 【haut 1262: 魔法宝石】+ 暴力

    1262: 魔法宝石 时间限制: 2 秒 内存限制: 64 MB 提交: 389 解决: 100 提交 状态 题目描述 小s想要创造n种魔法宝石.小s可以用ai的魔力值创造一棵第i种魔法宝石,或是使用 ...

  6. haut 1262: 魔法宝石(dij+堆优化)@

    1262: 魔法宝石 时间限制: 2 秒  内存限制: 64 MB 提交: 346  解决: 85 提交 状态 题目描述 小s想要创造n种魔法宝石.小s可以用ai的魔力值创造一棵第i种魔法宝石,或是使 ...

  7. HAUT 1262 魔法宝石 (最短路变形 or 暴力)

    1262: 魔法宝石 时间限制: 2 秒  内存限制: 64 MB 提交: 537  解决: 164 提交 状态 题目描述 小s想要创造n种魔法宝石.小s可以用ai的魔力值创造一棵第i种魔法宝石,或是 ...

  8. HAUT 1262 魔法宝石(spfa)(河南工业大学2017校赛)

    魔法宝石 题目描述 小s想要创造n种魔法宝石.小s可以用ai的魔力值创造一棵第i种魔法宝石,或是使用两个宝石合成另一种宝石(不消耗魔力值).请你帮小s算出合成某种宝石的所需的最小花费. 输入 第一行为 ...

  9. HAUT 1262 魔法宝石 暴力思想,多种解决方案

    魔法宝石 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submi ...

最新文章

  1. 详解 Date 对象
  2. PHP连接MySQL的2种方法以及防止乱码
  3. php表单写入数据库,php表单写入数据库
  4. ​2022年中国医疗信息化研究报告
  5. 基于webpack模块加载,ts里对系统对象prototype的扩展
  6. System Center 2012 R2 CM系列之配置configuration manager防火墙设置
  7. Jflash源码分析
  8. Python语言概述
  9. Microchip PIC系列8位单片机入门教程(七)PWM
  10. email地址格式怎么设置?申请个人电子邮件地址怎么写?
  11. if、else、else if使用方法
  12. PS教程:一分钟搞定 超简单PS皮肤美白方法
  13. [学习]17 每天只睡6小时,依然精力充沛
  14. python——字符串
  15. Linux 下 setfacl访问控制的使用
  16. Qt的工程文件(.pro) -- 转
  17. 深入理解GO语言:GC原理及源码分析
  18. Excel表格如何设置下拉选项并应用到整列
  19. 黑莓招聘 BlackBerry Developer Evangelist (based in China)
  20. 怎么用html制作满天星,html+js+css 实现满天星

热门文章

  1. 织梦php程序调用模型,织梦教程:Dedecms的频道模型新建字段调用方法
  2. 04_frp内网穿透实例
  3. Docker 部署在线文件转换服务--Libre Office Online
  4. java mysql 生僻字 乱码_JAVA生僻字乱码问题
  5. Java初级项目学习第一讲:Maven项目构建
  6. QQ空间视频下载详细教程(手机端)
  7. MATLAB面板布局—便捷美观
  8. javaweb mysql购物车_javaweb购物车实现的几种方式
  9. 在python中如何读取批量图片_Python批量处理图片
  10. Date转LocalDateTime