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. 在pivotal cloud foundry上申请账号和部署应用

    Created by Wang, Jerry, last modified on Jul 04, 2016 URL: http://run.pivotal.io/ maintain your mobi ...

  2. stm32和cortex M3学习内核简单总结

    1.stm32综述 2.寄存器组 3.操作模式和特权级别 4.存储器映射 5.中断和异常 6.其他 Stm32综述 这可以说是我第一款认真学习的单片机了,学完这个就要开启我通往arm9的大门了,接下来 ...

  3. OSI七层模型的新认识

    OSI 七层模型是internet的基石,它并没有制定一个标准,规定我们要怎么去做.美国军方曾把它精简到四层,只是站在了更实用的层次. 我们先来看看这个模型.   应用层->Applicatio ...

  4. String decryption with de4dot

    Introduction de4dot is a wonderful tool for deobfuscating known and unknown .NET protections. Dealin ...

  5. 【转载】浅谈HTTPS以及Fiddler抓取HTTPS协议

    最近想尝试基于Fiddler的录制功能做一些接口的获取和处理工作,碰到的一个问题就是简单连接Fiddler只能抓取HTTP协议,关键的登录请求等HTTPS协议都没有捕捉到,所以想让Fiddler能够同 ...

  6. PL/SQL复合类型

    一.PL/SQL记录:一条记录. 可简化单行多列的数据的处理.当使用pl/sql记录时,应用开发人员即可以自定义记录类型和记录变量,也可以使用%rowtype属性直接定义记录变量. 1.当使用自定义的 ...

  7. Java7--try - with - resources

    从 Java 7 build 105 版本开始,Java 7 的编译器和运行环境支持新的 try-with-resources 语句,称为 ARM 块(Automatic Resource Manag ...

  8. @EnableCircuitBreaker熔断超时机制

    客户端请求服务端的时候总是报超时,默认熔断机制是1S

  9. pygame无法自动补全解决方法

    在pycharm中导入pygame 1.  如果出现 AttributeError: module 'pip' has no attribute 'main'问题 找到安装目录下 helpers/pa ...

  10. python 正则表达式特殊字符

    字符 描述 \ 将下一个字符标记为一个特殊字符.或一个原义字符.或一个 向后引用.或一个八进制转义符.例如,'n' 匹配字符 "n".'\n' 匹配一个换行符.序列 '\\' 匹配 ...