思路:ans = 每条边(u,v)*v的子树节点的w = 所有的dist[v]*w[v]之和;


#include<iostream>
#include<queue>
#include<cstdio>
#include<cstring>
#define MAX 500005
const long long int INF = 100000000000000;
using namespace std;
typedef struct{
int to, next, w;
}Node;
Node edge[MAX*2];
queue<int>q;
long long int vis[MAX], head[MAX], dist[MAX], W[MAX];
long long int ans;
void init(int n){
memset(vis, 0, sizeof(vis));
memset(head, -1, sizeof(head));
for(int i = 1;i <= n;i ++)
dist[i] = INF;
dist[1] = 0;
}
void spfa(int s){
while(!q.empty()) q.pop();
q.push(s);
vis[s] = 1;
while(!q.empty()){
int p =q.front();
q.pop();
vis[p] = 0;
for(int i = head[p];i != -1;i = edge[i].next){
int v = edge[i].to;
if(dist[v] > dist[p] + edge[i].w){
dist[v] = dist[p] + edge[i].w;
if(!vis[v]){
q.push(v);
vis[v] = 1;
}
}
}
}
}
void AddEdge(int i, int u, int v, int w){
edge[i].to = v;
edge[i].w = w;
edge[i].next = head[u];
head[u] = i;
}
int main(){
int T, n, e, u, v, price, k;
/* freopen("in.c", "r", stdin); */
scanf("%d", &T);
while(T--){
scanf("%d%d", &n, &e);
init(n);
for(int i = 1;i <= n;i ++)
cin >> W[i];
k = 0;
for(int i = 0;i < e;i ++){
scanf("%d%d%d", &u, &v, &price);
AddEdge(k++, u, v, price);
AddEdge(k++, v, u, price);
}
spfa(1);
int flag = 0;
ans = 0LL;
for(int i = 2;i <= n;i ++){
if(dist[i] == INF){
flag = 1;
break;
}
ans += W[i]*dist[i];
}
if(!flag) cout << ans << endl;
else cout << "No Answer\n";
}
return 0;
}

												

POJ 3013的更多相关文章

  1. POJ 3013 Big Christmas Tree(最短Dijkstra+优先级队列优化,SPFA)

    POJ 3013 Big Christmas Tree(最短路Dijkstra+优先队列优化,SPFA) ACM 题目地址:POJ 3013 题意:  圣诞树是由n个节点和e个边构成的,点编号1-n. ...

  2. poj 3013 Big Christmas Tree (最短路径Dijsktra) -- 第一次用优先队列写Dijsktra

    http://poj.org/problem?id=3013 Big Christmas Tree Time Limit: 3000MS   Memory Limit: 131072K Total S ...

  3. poj 3013 最短路变形

    http://poj.org/problem?id=3013 给出n个点,m个边.给出每个点的权值,每个边的权值.在m条边中选n-1条边使这n个点成为一棵树,root=1,求这棵树的最小费用,费用=树 ...

  4. poj 3013 Big Christmas Tree

    Big Christmas Tree Time Limit: 3000MS   Memory Limit: 131072K Total Submissions: 20974   Accepted: 4 ...

  5. poj 3013 Big Christmas Tree Djistra

    Big Christmas Tree 题意:图中每个节点和边都有权值,图中找出一颗树,树根为1使得 Σ(树中的节点到树根的距离)*(以该节点为子树的所有节点的权值之和) 结果最小: 分析:直接求出每个 ...

  6. poj 3013 Big Christmas Tree (dij+优先级队列优化 求最短)

    模板 意甲冠军:给你一个图,1始终根,每一方都有单价值,每个点都有权重新. 每个边缘的价格值 = sum(后继结点重)*单价方值. 最低价格要求树值,它构成了一棵树n-1条边的最小价值. 算法: 1. ...

  7. poj 3013 SPFA

    首先看题看的很懵.. 然后这题直接没想用Djstra做 TLE了.看discuss,Dijstra要用堆优化,也可以用SPFA做. 这里在网上找了这两种做法的区别,点多稠密图用Dij,以为它是操作点的 ...

  8. POJ 3013最短路变形....

    DES:计算输的最小费用.如果不能构成树.输出-1.每条边的费用=所有的子节点权值*这条边的权值.计算第二组样例可以知道树的费用是所有的节点的权值*到根节点的最短路径的长度. 用dij的邻接矩阵形式直 ...

  9. SPFA/Dijkstra POJ 3013 Big Christmas Tree

    题目传送门 题意:找一棵树使得造价最少,造价为每个点的子节点造价和*边的造价和 分析:最短路跑出1根节点到每个点的最短边权值,然后每个点的权值*最短边距和就是答案,注意INF开足够大,n<=1特 ...

随机推荐

  1. jquery 100%全屏自适应宽可点击左右和焦点的自动切换幻灯片特效

    http://www.divcss5.com/css-texiao/texiao717.shtml http://d.divcss5.com/divcss5/down/2014062201.zip

  2. 纯原生js移动端城市选择插件

    接着上一篇纯js移动端日期选择插件,话说今天同事又来咨询省市县联动的效果在移动端中如何实现,还是老样子,百度上一搜,诶~又全是基于jquery.zepto的,更加可恨的是大多数都是PC版的,三个sel ...

  3. 解决IE 下div与img重叠无法触发鼠标事件的问题

    在IE下当我想在img标签上层显示一个div元素时,此时如果该div的background为空白(没有设置图片.或者颜色填充),会导致该div的鼠标事件失效:如果设置border为1px solid ...

  4. live 写博

    1           2           3           4           5         1       2       3       4       5         ...

  5. 一次Oracle数据迁移

    目标数据库:Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 源数据库  : Oracle Database 11g Enterpri ...

  6. sparkR原理

    p.p1 { margin: 0.0px 0.0px 10.0px 0.0px; font: 11.0px "Times New Roman"; min-height: 12.0p ...

  7. nls_sort和nlssort 排序功能介绍

    nls_sort和nlssort 排序功能介绍 博客分类: oracle   ALTER SESSION SET NLS_SORT=''; 排序影响整个会话 Oracle9i之前,中文是按照二进制编码 ...

  8. 上传图片+浏览+裁切 Demo(无后台处理部分)

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. node.js 1Million concurrent connections!

    https://github.com/ashtuchkin/node-millenium http://blog.caustik.com/2012/08/19/node-js-w1m-concurre ...

  10. PHP完整环境搭建

    Linux(CentOS 7)+ Nginx(1.10.2)+ Mysql(5.7.16)+ PHP(7.0.12) 首先安装Linux系统,我以虚拟机安装来做示例,先去下载 VitualBox,这是 ...