HAUTOJ 1262: 魔法宝石 24行代码
来源:互联网 发布:tpshop完整版源码下载 编辑:程序博客网 时间:2024/05/16 10:21
1262: 魔法宝石
时间限制: 2 秒 内存限制: 64 MB提交: 332 解决: 77
提交 状态
题目描述
小s想要创造n种魔法宝石。小s可以用ai的魔力值创造一棵第i种魔法宝石,或是使用两个宝石合成另一种宝石(不消耗魔力值)。请你帮小s算出合成某种宝石的所需的最小花费。
输入
第一行为数据组数T(1≤T≤3)。
对于每组数据,首先一行为n,m(1≤n,m≤10^5)。分别表示魔法宝石种类数和合成魔法的数量。
之后一行n个数表示a1到an。(1≤ai≤10^9)。a_i表示合成第i种宝石所需的魔力值。
之后n行,每行三个数a,b,c(1≤a,b,c≤m),表示一个第a种宝石和第b种宝石,可以合成一个第c种宝石。
输出
每组数据输出一行n个数,其中第i个数表示合成第i种宝石的魔力值最小花费。
样例输入
1
3 1
1 1 10
1 2 3
样例输出
1 1 2
观察者这道题首先想到就是让a0[c]=min(a0[c],a0[a]+a0[b])就可以了;但是仔细想想之后会发现可能出现这种情况,例如:a0={10,10,15,1,1},abc分别等于1 2 3;4 5 1;这种情况就要考虑进行a0[c]=min(a0[c],a0[a]+a0[b])的顺序了,但是当顺序非常复杂是就很难通过一遍a0[c]=min(a0[c],a0[a]+a0[b])步骤达到最终结果了,在根据数据量就可以尝试不管顺序,直接多次按输入顺序进行a0[c]=min(a0[c],a0[a]+a0[b])了。
经过尝试,果然经过100次循环后就轻松解决了顺序问题。
#include<bits/stdc++.h>using namespace std;int xxx[100005];//合成宝石的花费int a[100005],b[100005],c[100005];int main() {int T,n,m;int i,j;cin>>T;while(T--) {cin>>n>>m;for(i=0; i<n; i++)cin>>xxx[i];for(i=0; i<m; i++)cin>>a[i]>>b[i]>>c[i];for(j=0; j<100; j++)for(i=0; i<m; i++)xxx[c[i]-1]=min(xxx[c[i]-1],xxx[a[i]-1]+xxx[b[i]-1]);cout<<xxx[0];for(i=1; i<n; i++)cout<<' '<<xxx[i];cout<<endl;}return 0;}
0 0
- HAUTOJ 1262: 魔法宝石 24行代码
- HAUTOJ 1262 魔法宝石
- hautoj 1262 魔法宝石【最短路】
- HAUTOJ 1262魔法宝石 优先队列
- 【haut 1262: 魔法宝石】+ 暴力
- 魔法宝石
- 魔法宝石
- 魔法宝石 spfa
- hautoj1262: 魔法宝石
- 1262: 魔法宝石 (“玲珑杯”河南工业大学ACM程序设计大赛)
- haut 1262: 魔法宝石(dij+堆优化)@
- HAUT 1262 魔法宝石 (最短路变形 or 暴力)
- HAUT 1262 魔法宝石 暴力思想,多种解决方案
- HAUT校赛 魔法宝石 暴力
- HAUT 1262 魔法宝石(spfa)(河南工业大学2017校赛)
- 魔法宝石(思维啊……)
- 魔法宝石(类似dp 杭电排位赛-2)
- 河南工业大学2017校赛 C 魔法宝石【最短路变形】
- 深入java虚拟机阅读笔记(jvm内存原理、异常处理部分)
- flannel 实战与源码分析(二)
- ntpdate + crond 实现周期性对时
- Class"X" is public, should be declared in a file named "X.java"
- 2_4最近邻算法kNN(k_nearest_neighbor)——datingClassTest_2_4
- HAUTOJ 1262: 魔法宝石 24行代码
- leetcode 371. Sum of Two Integers
- video标签兼容性
- IT人应该具备的能力
- 第十天作业:博客首页
- 由socket的accept说开去
- mysql服务器的主从配置
- Android无埋点数据收集SDK关键技术
- Number Complement