/*
调了一下午的最小树形图,昨天刚刚看懂模板。。
最小树形图,就是有向图的最小生成树,很神奇==
*/
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#define MAXN 1002
#define INF 0x3f3f3f3f
using namespace std;
struct Node{
int x,y,z;
}nodes[MAXN];
struct Edge{
int u,v,w;
}e[MAXN*MAXN];
int tot;
int dist(int a,int b,int y,int z){
int res=;
res+=abs(nodes[a].x-nodes[b].x)*y+abs(nodes[a].y-nodes[b].y)*y+abs(nodes[a].z-nodes[b].z)*y;
if(nodes[a].z<nodes[b].z)
res+=z;
return res;
} int pre[MAXN],id[MAXN],visit[MAXN],in[MAXN];
int zhuliu(int root,int n,int m){
int res=,u,v;
while(){
for(int i=;i<n;i++)
in[i]=INF;
//建立最小弧集E
for(int i=;i<m;i++)
if(e[i].u!=e[i].v && e[i].w<in[e[i].v]){
pre[e[i].v]=e[i].u;
in[e[i].v]=e[i].w;
}
for(int i=;i<n;i++)
if(i!=root && in[i]==INF)
return -;//不存在最小树形图 int tn=;
memset(id,-,sizeof id);
memset(visit,-,sizeof visit);
in[root]=;
for(int i=;i<n;i++){//找环染色
res+=in[i];
v=i;
while(visit[v]!=i && id[v]==- && v!=root){
visit[v]=i;
v=pre[v];
}//找环
if(v!=root && id[v]==-){
for(int u=pre[v];u!=v;u=pre[u])
id[u]=tn;
id[v]=tn++;
}//染色
}
if(tn==)//没有环
break; for(int i=;i<n;i++)//给没有环的点染色
if(id[i]==-)
id[i]=tn++;
for(int i=;i<m;){//
v=e[i].v;
e[i].u=id[e[i].u];
e[i].v=id[e[i].v];
if(e[i].u!=e[i].v)//如果是在不同的环里
e[i++].w -= in[v];
else
swap(e[i],e[--m]);
} n=tn;//剩下tn个点
root=id[root];
}
return res;
} int main(){
int n,x,y,z,k,v;
while(scanf("%d%d%d%d",&n,&x,&y,&z)!=EOF && n){
tot=;
for(int i=;i<=n;i++)
scanf("%d%d%d",&nodes[i].x,&nodes[i].y,&nodes[i].z);
for(int u=;u<=n;u++){
scanf("%d",&k);
while(k--){
scanf("%d",&v);
e[tot].u=u;
e[tot].v=v;
e[tot].w=dist(u,v,y,z);
tot++;
}
} int root=;
for(int i=;i<=n;i++){
e[tot].u=root;
e[tot].v=i;
e[tot].w=x*nodes[i].z;
tot++;
} printf("%I64d\n",zhuliu(root,n+,tot));
}
return ;
}

 

hdu4009最小树形图板子题的更多相关文章

  1. poj3164 最小树形图板子题

    /* 思路很简单,也不知道哪里错了TAT */ /* N个点通过笛卡尔坐标表示 根节点是1,求最小树形图 */ #include<iostream> #include<cstdio& ...

  2. hdu4009最小树形图

    多建一个根,连到每一个点,然后花费是建水井的钱 然后跑一边最小树形图即可,这题必定有解,因为可以从根开始到每一点,可以不用判无解的情况 #include<map> #include< ...

  3. 最小割板子题——[USACO5.4]奶牛的电信

    今天邱神给我们讲了图论,还讲了一下网络流算法.自己找了一个洛谷板子题. 题目描述 农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流.这些机器用如下的方式发送电邮:如果 ...

  4. POJ 3164 Command Network(最小树形图模板题+详解)

    http://poj.org/problem?id=3164 题意: 求最小树形图. 思路: 套模板. 引用一下来自大神博客的讲解:http://www.cnblogs.com/acjiumeng/p ...

  5. poj3164最小树形图模板题

    题目大意:给定一个有向图,根节点已知,求该有向图的最小树形图.最小树形图即有向图的最小生成树,定义为:选择一些边,使得根节点能够到达图中所有的节点,并使得选出的边的边权和最小. 题目算法:朱-刘算法( ...

  6. hdu 4009 最小树形图模板题朱刘算法

    #include<stdio.h> /*思路:显然对于每个地方, 只有一种供水方式就足够了,这样也能保证花费最小, 而每个地方都可以自己挖井,所以是不可能出现无解的情况的, 为了方便思考, ...

  7. uva11183 最小树形图模板题

    很简单的模板题,不多说了 #include<iostream> #include<cstring> #include<cstdio> #define INF 0x3 ...

  8. 【刷题】洛谷 P4716 【模板】最小树形图

    题目背景 这是一道模板题. 题目描述 给定包含 \(n\) 个结点, \(m\) 条有向边的一个图.试求一棵以结点 \(r\) 为根的最小树形图,并输出最小树形图每条边的权值之和,如果没有以 \(r\ ...

  9. bzoj4349: 最小树形图

    最小树形图模板题…… 这种\(O(nm)\)的东西真的能考到么…… #include <bits/stdc++.h> #define N 60 #define INF 1000000000 ...

随机推荐

  1. Core Mvc传值Query、Form、Cookies、Session、TempData、Cache

    1.传值方法 使用Request的方法(1-3): 1)Query:获取链接?后面的值 如:http://localhost:55842/Home/About?name=kxy public IAct ...

  2. 《一头扎进SpringMvc视频教程》

    第二章 SpringMvc控制器 第三章 Rest风格的资源URL 第四章 SpringMvc上传文件

  3. Builder搭建外置服务器

    如何利用HBuilder快速设置外部web服务器来测试移动web     HBuilder 关于HBuilder工具的简介:HBuilder是DCloud(数字天堂)推出的一款支持HTML5的Web开 ...

  4. oracle12.2.1 坑

    1.ORA-28040: No matching authentication protocol 解决:在Oracle用户(不是grid用户)下,将$ORACLE_HOME/network/admin ...

  5. QR二维码原理(一)

    一.什么是QR码 QR码属于矩阵式二维码中的一个种类,由DENSO(日本电装)公司开发,由JIS和ISO将其标准化.QR码的样子其实在很多场合已经能够被看到了,我这还是贴个图展示一下: 这个图如果被正 ...

  6. $resource详解

    $resource 首先添加$resource的引用 <script src="Scripts/angular.min.js"></script> < ...

  7. Python运维开发基础04-语法基础【转】

    上节作业回顾(讲解+温习90分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen # 仅用列表+循环实现“简单的购物车程 ...

  8. liunx 安装Zabbix的心酸历程

    作者:邓聪聪 为了工作之需要,在系统服务方面不断的摸爬打滚,有了这样点点滴滴的经验,留后在使用!  插件网盘取. 链接: https://pan.baidu.com/s/1i5u0ed3 密码: rx ...

  9. $Django setting.py配置 ,GET、POST深入理解,三件套,orm对象关系映射简介

    1 django中app的概念: 大学:----------------- 项目  信息学院 ----------app01  物理学院-----------app02 ****强调***:创建的每一 ...

  10. oracle 11.2.0.4 rac 打补丁

    本次安装pus环境是11.2.0.4 rac,打的patch为11.2.0.4.180717 (Includes Database PSU),gi补丁和数据库补丁一起打 安装最新opatch版本 un ...