Vasya在玩一个叫做”Dwarf Tower”的游戏,这个游戏中有n个不同的物品,

它们的编号为1到n。现在Vasya想得到编号为1的物品。

获得一个物品有两种方式:

直接购买该物品,第i件物品花费的钱为ci

用两件其他物品合成所需的物品,一共有m种合成方式。

请帮助Vasya用最少的钱获得编号为1的物品。

【输入格式】

第一行有两个整数n,m(1<=n<=10000,0<=m<=100000),分别表示有n种物品以

及m种合成方式。

接下来一行有n个整数,第i个整数ci表示第i个物品的购买价格,其中

0<=ci<=10^9。

接下来m行,每行3个整数ai,xi,yi,表示用物品xi和yi可以合成物品ai,其

中(1<=ai,xi,yi<=n; ai<>xi, xi<>yi, yi<>ai)

【输出格式】

一行,一个整数表示获取物品 1 的最少花费。

把每一次更新的节点的父亲放入队列中,然后从队列中取一个,在将和他有关的相邻节点相加与他的父亲相比较,如果有更新继续放入队列,直到没有

#include<bits/stdc++.h>
#define sf scanf
#define pf printf
#define si(a) a.size()
#define pii pair<int,int>
#define scf(x) scanf("%d",&x)
#define scff(x,y) scanf("%d%d",&x,&y)
#define rep(i,a,n) for (int i=a;i<n;i++)
#define per(i,a,n) for (int i=a;i>=n;i--)
#define mm(x,b) memset((x),(b),sizeof(x))
#define scfff(x,y,z) scanf("%d%d%d",&x,&y,&z)
#define de(a) cout << #a << " = " << a << endl
#define dd(a) cout << #a << " = " << a << " "
typedef long long ll;
using namespace std;
const double eps=1e-8;
const int N=1e4+2;
int a[N];
int vis[N]; struct node
{
int pa,fa;
}t;
vector<node> qa[N];
queue<node> q;
queue<int>v;
void solve()
{
while(!v.empty() )
{
int tt=v.front();
v.pop();
vis[tt]=0;
int len=qa[tt].size();
rep(i,0,len)
{
t=qa[tt][i];
if(a[t.fa]>a[t.pa]+a[tt])
{
if(vis[t.fa]==0)
{
vis[t.fa]=1;
v.push(t.fa);
}
a[t.fa]=a[t.pa]+a[tt];
}
}
}
}
int main()
{
// freopen("dwarf.in","r",stdin);
// freopen("dwarf.out","w",stdout);
//输入
mm(vis,0);
int n,m;scff(n,m);
rep(i,1,n+1)
scf(a[i]);
rep(i,0,m)
{
int x,y,z;
scfff(x,y,z);
if(a[x]>a[y]+a[z])
{
if(vis[x]==0)
v.push(x),vis[x]=1;
a[x]=a[y]+a[z];
}
t.fa =x;
t.pa =y;
qa[z].push_back(t);
t.pa =z;
qa[y].push_back(t);
}
solve();
cout<<a[1];
return 0;
}

D.Dwarf Tower的更多相关文章

  1. dwarf tower

    dwarf tower(dwarf.cpp/c/pas)[问题描述]Vasya在玩一个叫做"Dwarf Tower"的游戏,这个游戏中有n个不同的物品,它们的编号为1到n.现在Va ...

  2. Codeforces Gym 100269D Dwarf Tower spfa

    Dwarf Tower 题目连接: http://codeforces.com/gym/100269/attachments Description Little Vasya is playing a ...

  3. noip模拟赛 dwarf tower

    [问题描述]Vasya在玩一个叫做"Dwarf Tower"的游戏,这个游戏中有n个不同的物品,它们的编号为1到n.现在Vasya想得到编号为1的物品.获得一个物品有两种方式:1. ...

  4. Codeforces Gym 100269 Dwarf Tower (最短路)

    题目连接: http://codeforces.com/gym/100269/attachments Description Little Vasya is playing a new game na ...

  5. Problem D. Dwarf Tower spfa

    http://codeforces.com/gym/100269/attachments 首先建图,然后图中每条边的权值是会变化的,是由dis[x] + dis[y]  --->   dis[m ...

  6. HNU 12847 Dwarf Tower(最短路+队列优化)

    题目链接:http://acm.hnu.cn/online/?action=problem&type=show&id=12847 解题报告:有n样物品,编号从1到n第i样物品可以通过金 ...

  7. 2016 ACM赛后总结

    已经到6.30号了哎~ 比赛是6.5号的,被推迟了好久的总结现在发吧,因为我怕我再不写就真的会忘掉-- 6.3号晚,星期五,我们一行人乘坐 济南<->徐州 的火车,然后出发了-- 6.4号 ...

  8. 11.10 noip模拟试题

    1.第K小数 (number.cpp/c/pas) [问题描述] 有两个正整数数列,元素个数分别为N和M.从两个数列中分别任取一个数 相乘,这样一共可以得到N*M个数,询问这N*M个数中第K小数是多少 ...

  9. noip2017考前整理(未完)

    快考试了,把我以前写过的题回顾一下.Noip2007 树网的核:floyd,推出性质,暴力.Noip2008 笨小猴:模拟Noip2008 火柴棒等式:枚举Noip2008 传纸条:棋盘dpNoip2 ...

随机推荐

  1. TLS1.3对CIP的影响(对密码套件的解释)

    1.术语定义的即使(算法)Definition of terms (optional) Cipher Suite  :通信数据保护规范,对TLS指定对端身份验证,关键技术机制,后续数据加密和数据验证机 ...

  2. Alpha2版本相互测试

    [作业信息] Q A 作业所属课程 https://edu.cnblogs.com/campus/xnsy/2019autumnsystemanalysisanddesign/ 作业要求 https: ...

  3. python自动化

    自动化测试一些问题 什么是自动化测试? 自动化测试,顾名思义,自动完成测试工作.通过一些自动化测试工具或自己造轮子实现模拟之前人工点点/写写的工作并验证其结果完成整个测试过程,这样的测试过程,便是自动 ...

  4. zoj 4099 Extended Twin Composite Number

    Do you know the twin prime conjecture? Two primes  and  are called twin primes if . The twin prime c ...

  5. python_面向对象——属性方法property

    1.属性方法 class Student(object): def __init__(self,name): self.name = name @property #属性方法:把一个方法变成一个静态的 ...

  6. prometheus-alertmanager告警推送到钉钉

    1. Prometheus告警简介 告警能力在Prometheus的架构中被划分成两个独立的部分.如下所示,通过在Prometheus中定义AlertRule(告警规则),Prometheus会周期性 ...

  7. 简介WEB应用服务器TONCAT

    1.HTTP与Tomcat简介1.1 什么是Http协议HTTP,超文本传输协议(HyperText Transfer Protocol)是互联网上应用最为广泛的 一种网络协议.所有的WWW文件都必须 ...

  8. JavaScript-日常代码-时间

    取得今天0点: var start = new Date(new Date(new Date().toLocaleDateString()).getTime()); console.log(start ...

  9. 简述 CGI、FastCGI和php-FPM的区别

    1.CGI是联系webserver 跟php解析器的一个桥梁 2.FastCGI是CGI改良的版本 3.php-FPM 是FastCGI 的进程管理器

  10. 查看DOM对象的style样式,attributes属性,children

     // 在不同的浏览器查看各种属性,样式.如果不知道哪个对象的属性样式怎么写,可以在控制台输出 style attributes// 所有的属性样式都会出现// 此外还可以检查某个属性在不同浏览器是否 ...