最短路
来源:互联网 发布:我打软件技巧 编辑:程序博客网 时间:2024/06/05 02:45
1262: 魔法宝石
时间限制: 2 秒 内存限制: 64 MB提交: 335 解决: 79
提交 状态
题目描述
小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≤n),表示一个第a种宝石和第b种宝石,可以合成一个第c种宝石。
输出
每组数据输出一行n个数,其中第i个数表示合成第i种宝石的魔力值最小花费。
样例输入
13 11 1 101 2 3
样例输出
1 1 2
提示
来源
#include <stdio.h>#include<algorithm>#include<iostream>#include<cstring>#include<queue>using namespace std;const int MAX=100000+5;int head[MAX];int dist[MAX];int vis[MAX];int num;queue <int> q;struct Node{ int v; int w; int next;}edge[10*MAX];void add_edge(int u,int v,int w){ edge[num].v=v; edge[num].w=w; edge[num].next=head[u]; head[u]=num++;}void spfa(){ int i,u,v,w; while(!q.empty()) { u=q.front(); q.pop(); vis[u]=false; for(i=head[u];i!=-1;i=edge[i].next) { v=edge[i].v; w=edge[i].w; if(dist[w]>dist[u]+dist[v]) { dist[w]=dist[u]+dist[v]; if(!vis[w]) { q.push(w); vis[w]=true; } } } }}int main(){ int T; scanf("%d",&T); while(T--) { num=0; int n,m; memset(head,-1,sizeof(head)); memset(dist,0x3f,sizeof(dist)); memset(vis,false,sizeof(vis)); scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) { scanf("%d",&dist[i]); } int x,y,z; for(int i=1;i<=m;i++) { scanf("%d%d%d",&x,&y,&z); add_edge(x,y,z); add_edge(y,x,z); if(vis[x]==false) { q.push(x); vis[x]=true; } if(vis[y]==false) { q.push(y); vis[y]=true; } } spfa(); for(int i=1;i<n;i++) { printf("%d ",dist[i]); } printf("%d\n",dist[n]); } return 0;} /************************************************************** Problem: 1262 User: 1406955015 Language: C++ Result: 正确 Time:244 ms Memory:14968 kb****************************************************************/
还是最短路的题,一个点,能被松弛就把它松弛,然后加入队列(可能还可以用它去松弛其他点)。
0 0
- 最短路 & 次短路
- 最短路
- 最短路
- 最短路
- 最短路
- 最短路
- 最短路
- 最短路
- 最短路
- 最短路
- 最短路
- 最短路
- 最短路
- 最短路
- 最短路
- 最短路
- 最短路
- 最短路
- MySQL事务
- sql server 2008导出数据注意事项
- 微信6.2开发笔记
- ZOJ Problem Set
- 二分查找
- 最短路
- 基于Django的在线MOOC学习系统(3)——创建 user App 并设计 models.py
- 如何将数据序列化为XML格式
- 【贪心】洛谷 P1007 独木桥
- 获取项目文件目录下的所有文件路径
- Spring整合JUnit4测试使用注解引入多个配置文件
- Where条件的in里面放太多数据导致很慢
- Android开发入门(二)——基本语法2
- ADO.Net ExecuteScalar、ExecuteReader不只是我想的这样的用处。