双倍经验大法吼

昨天发现不会最小属性图&朱刘算法啊

吓得我赶紧补了一发

朱刘算法模板题

#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#define N 55
#define M 2505 using namespace std;
struct edge{
int from,adj,next;double len;
edge(){}
edge(int _from,int _adj,int _next,double _len):from(_from),adj(_adj),next(_next),len(_len){}
} e[M];
int n,g[N],m;
void AddEdge(int u,int v,double w){
e[++m]=edge(u,v,g[u],w);g[u]=m;
} double in[N];
int prep[N];
int vis[N],stamp;
int bl[N],cnt;
double directed_MST(){
double ret=0;
e[0].adj=0;
for (;;){
memset(in,127,sizeof(in));
memset(prep,0,sizeof(prep));
for (int u=1;u<=n;++u)
for (int i=g[u];i;i=e[i].next)
if (e[i].len<in[e[i].adj])
in[e[i].adj]=e[i].len,prep[e[i].adj]=u;
for (int i=1;i<=n;++i) if (prep[i]) ret+=in[i];
memset(vis,0,sizeof(vis));vis[0]=stamp=1;
memset(bl,0,sizeof(bl));cnt=0;
for (int i=1;i<=n;++i)if (!vis[i]){
int u=i;
++stamp;
for (;!vis[u];u=prep[u]) vis[u]=stamp;
if (vis[u]==stamp){
++cnt;
for (;!bl[u];u=prep[u]) bl[u]=cnt;
}
}
if (!cnt) return ret;
for (int i=1;i<=n;++i) if (!bl[i]) bl[i]=++cnt;
int m0=m;
memset(g,0,sizeof(g));m=1;
for (int i=2;i<=m0;++i)
if (bl[e[i].from]!=bl[e[i].adj])
AddEdge(bl[e[i].from],bl[e[i].adj],e[i].len-in[e[i].adj]);
n=cnt;
}
} int need[N];
double mincost[N];
int main(){
scanf("%d",&n);++n;
memset(g,0,sizeof(g));m=1;
int u,v,m0;double tmp;
for (int i=1;i<n;++i){
scanf("%lf%d",&mincost[i],&need[i]);
if (need[i])
AddEdge(n,i,mincost[i]);
}
scanf("%d",&m0);
while (m0--){
scanf("%d%d%lf",&u,&v,&tmp);
if (need[u]&&need[v]){
AddEdge(u,v,tmp);
mincost[v]=min(mincost[v],tmp);
}
}
double sum=0;
for (int i=1;i<=n;++i)
if (need[i])
sum+=mincost[i]*(need[i]-1);
printf("%.2lf\n",sum+directed_MST());
return 0;
}

  

bzoj4349: 最小树形图&&bzoj2260: 商店购物的更多相关文章

  1. bzoj2260: 商店购物 && 4349: 最小树形图

    Description Grant是一个个体户老板,他经营的小店因为其丰富的优惠方案深受附近居民的青睐,生意红火.小店的优惠方案十分简单有趣.Grant规定:在一次消费过程中,如果您在本店购买了精制油 ...

  2. bzoj2260: 商店购物&&4349: 最小树形图

    最小树形图问题啊 最小树形图是撒哩,就是给你一个有向图,确定一个根,要你到达所有点,那棵最短路径树的总边权 做这个用的是朱(jv)刘(lao)算法. 首先假如有多个联通块就无解啦 对应每个点(除了根) ...

  3. [JSOI2008]小店购物 & bzoj4349:最小树形图 最小树形图

    ---题面(洛谷)--- ---题面(bzoj)--- 其实是同一道题,,,样例都一模一样 题解: 一开始看想了好久,,,还想到了最短路和最小生成树,,然而写的时候才意识到最小生成树应该要用无向边 其 ...

  4. bzoj4349: 最小树形图

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

  5. 【Bzoj2260】【Bzoj4349】商店购物 & 最小树形图

    目录 List Bzoj 2260 商店购物 Description Input Output Sample Input Sample Output Bzoj 4349 最小树形图 Descripti ...

  6. BZOJ 2260 商店购物(最小树形图)

    不会最小树形图的出门左转 其实如果确定每种商品第一件的购买顺序,那么剩下的商品肯定是以最优惠价格购买的. 如何确定各种商品第一件购买时的最小价值呢? 考虑如果购买了\(a_i\)这种商品,那么就能以\ ...

  7. Luogu2792 JSOI2008 小店购物 最小树形图

    传送门 被题意杀 本以为一个种类的物品一定要一起买 看了题解才知道可以先把所有要买的物品买一个,剩下要买的物品就可以得到这个种类的物品能够得到的最大优惠-- 所以现在只需要知道:第一次买所有物品一遍时 ...

  8. 【LuoguP2792 】[JSOI2008]小店购物(最小树形图)

    题目链接 题目描述 小店的优惠方案十分简单有趣: 一次消费过程中,如您在本店购买了精制油的话,您购买香皂时就可以享受2.00元/块的优惠价:如果您在本店购买了香皂的话,您购买可乐时就可以享受1.50元 ...

  9. hdu 4966 GGS-DDU (最小树形图)

    比较好的讲解:http://blog.csdn.net/wsniyufang/article/details/6747392 view code//首先为除根之外的每个点选定一条入边,这条入边一定要是 ...

随机推荐

  1. BZOJ 3524: [Poi2014]Couriers

    3524: [Poi2014]Couriers Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 1905  Solved: 691[Submit][St ...

  2. gRpc NET Core

    NET Core下使用gRpc公开服务(SSL/TLS) 一.前言 前一阵子关于.NET的各大公众号都发表了关于gRpc的消息,而随之而来的就是一波关于.NET Core下如何使用的教程,但是在这众多 ...

  3. NOI2018准备Day19

    5天没写. 伸展树  主席树 3到线段树模板题

  4. youtube下载

    http://jingyan.baidu.com/article/39810a23d2deb2b637fda66c.html

  5. 基于SignalR的小型IM系统

    这个IM系统真是太轻量级了,提供的功能如下: 1.聊天内容美化 2.用户上下线提示 3.心跳包检测机制 4.加入用户可群聊 下面来一步一步的讲解具体的制作方法. 开篇准备工作 首先,巧妇难为无米之炊, ...

  6. Java7并发编程实战(一) 守护线程的创建和运行

    Java里有一种特殊的线程叫做守护(Daemon)线程,这种线程的优先级很低,通常来说,当一个应用程序里面没有其他线程运行的时候,守护线程才运行,当线程是程序中唯一运行的线程时,守护线程执行结束后,J ...

  7. JavaScript的一些知识碎片(2)-反射-全局变量-回调

    JavaScript中的反射:编程语言中的反射原理都一样,就是通过操作metadata(描述语言的语言)来完成一些不具备反射功能的语言很难实现的功能.在静态语言中,反射是一个高大上的东西,比如在运行时 ...

  8. CodeSmith操作Access时字段的排序问题

    最近在用CodeSmith操作写ACCESS数据库的代码模版,发现CodeSmith默认的字段顺序与ACCESS中表的字段顺序不一致. 首先在ACCESS数据库中建一个测试表Test,并添加ID.Na ...

  9. redis性能测试tcp socket and unix domain

    UNIX Domain Socket IPC socket API原本是为网络通讯设计的,但后来在socket的框架上发展出一种IPC机制,就是UNIX Domain Socket.虽然网络socke ...

  10. 关于.Net的面试遐想

    概述 这几天更新相关的面试题目,主是要针对有4年或以上经验的面试者,总体来说,发现面试人员的答题效果和预期相差比较大,我也在想是不是我出的题目偏离现实,但我更愿意相信,是我们一些.Net开发者在工作中 ...