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;
}

最新文章

  1. Hawk 4. 数据清洗
  2. 解决开启SQL Server sql Always on Group 事务日志增大的问题
  3. 转: 什么是REST?
  4. sudo: unable to resolve host XXX 解决方法
  5. &lt;转&gt; 纸牌屋1-4集分析
  6. 系列二VS项目软件配置工具介绍
  7. PHP下利用PHPMailer配合QQ邮箱下的域名邮箱发送邮件
  8. 用webpack搭建react开发环境
  9. Android面试题目2
  10. .NET Core TDD 前传: 编写易于测试的代码 -- 全局状态
  11. QT 5 安装 vs2017 后,出现找不到 rc.exe 问题
  12. 2017-2018-2 20155231《网络对抗技术》实验五: MSF基础应用
  13. Java实现Kmeans算法
  14. vuex使用
  15. pass语句
  16. Excel poi API基础教程!
  17. ng-class中的if else判断
  18. effective javascript 学习心得
  19. python四则运算2.0
  20. Java 之单例设计模式

热门文章

  1. memoryCache的使用
  2. Gitlab CI/CD任务一直处于pending
  3. nginx编译安装和功能介绍
  4. 理解ld-linux.so.2
  5. 更改Ubuntu下默认Python版本
  6. artDialog提示框
  7. BZOJ 4316: 小C的独立集
  8. linux网络编程之socket编程(十四)
  9. @PostMapping和@PutMapping区别
  10. P1363 幻象迷宫[搜索]