题意:给一个有向图,问要从0号点能到达所有点所需要经过路径的最小权值和是多少,然而,若两点强联通,则这两点互相到达不需要花费。保证0号点能到达所有点

tarjan缩点以后直接取每个点入边中花费最小的即可。

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 #include<vector>
 5 #include<queue>
 6 #include<cmath>
 7 #include<ctime>
 8 #define LL long long int
 9 using namespace std;
10 const int maxn=50050,maxm=100010;
11
12 LL rd(){
13     LL x=0;char c=getchar();int neg=1;
14     while(c<'0'||c>'9'){if(c=='-') neg=-1;c=getchar();}
15     while(c>='0'&&c<='9') x=x*10+c-'0',c=getchar();
16     return x*neg;
17 }
18
19 struct Edge{
20     int a,b,l,ne;
21 }eg[maxm];
22 int egh[maxn],ect;
23 int N,M;
24 int dfn[maxn],low[maxn],bel[maxn],stk[maxn],tot,pct,sct;
25 bool instk[maxn];
26 int mi[maxn];
27
28 inline void adeg(int a,int b,int l){
29     eg[ect].a=a;eg[ect].b=b;eg[ect].l=l;eg[ect].ne=egh[a];egh[a]=ect++;
30 }
31
32 void tarjan(int x){
33     dfn[x]=low[x]=++tot;
34     stk[++sct]=x;instk[x]=1;
35     for(int i=egh[x];i!=-1;i=eg[i].ne){
36         int j=eg[i].b;
37         if(instk[j]) low[x]=min(low[x],dfn[j]);
38         else if(!dfn[j]){
39             tarjan(j);low[x]=min(low[x],low[j]);
40         }
41     }
42     if(low[x]==dfn[x]){
43         ++pct;
44         while(sct){
45             instk[stk[sct]]=0;
46             bel[stk[sct]]=pct;
47             if(stk[sct--]==x) break;
48         }
49     }
50 }
51
52 int main(){
53     int i,j,k;
54     while(~scanf("%d%d",&N,&M)){
55         memset(egh,-1,sizeof(egh));
56         memset(dfn,0,sizeof(dfn));
57         memset(instk,0,sizeof(instk));
58         ect=tot=pct=sct=0;
59         for(i=1;i<=M;i++){
60             int a=rd(),b=rd(),c=rd();
61             adeg(a,b,c);
62         }
63
64         for(i=0;i<N;i++) if(!dfn[i]) tarjan(i);
65         memset(mi,127,sizeof(mi));
66         for(i=0;i<ect;i++){
67             if(bel[eg[i].a]==bel[eg[i].b]) continue;
68             mi[bel[eg[i].b]]=min(mi[bel[eg[i].b]],eg[i].l);
69         }int ans=0;
70         for(i=1;i<=pct;i++){
71             if(i!=bel[0]) ans+=mi[i];
72         }printf("%d\n",ans);
73     }
74 }

转载于:https://www.cnblogs.com/Ressed/p/9409493.html

hdu3072 Intelligence System (最小树形图?)相关推荐

  1. [HDU3072]:Intelligence System(塔尖+贪心)

    题目传送门 题目描述 "这一切都是命运石之门的选择." 试图研制时间机器的机关SERN截获了中二科学家伦太郎发往过去的一条短 信,并由此得知了伦太郎制作出了电话微波炉(仮). 为了 ...

  2. NOI数据结构:最小树形图

    最小树形图-朱刘算法详解 +例题解析 最小树形图-朱刘算法详解 +例题解析_pursuit的博客-CSDN博客_最小树形图 图论 -- 生成树 -- 最小树形图 图论 -- 生成树 -- 最小树形图_ ...

  3. Intelligence System HDU - 3072(强连通分量)

    Intelligence System HDU - 3072 题意:一个人要传递命令给所有人,如果两人之间互达,不需任何费用,求最少费用 有向图强连通. 1 #include <bits/std ...

  4. 最小树形图及其生产方法

    诸位看官,这是我第一次在整篇文章的所有图片里面加水印.小弟写博客的时间不长,就有两篇博客被盗用并未注明原文网址.这一方面使我痛心不已,另一方面迫使我不得不重新考虑一下版权保护问题.小弟不是吝啬鬼,如果 ...

  5. poj3164(最小树形图模版)

    对最小树形图做个小小的总结: 1:清除自环,自环是不可能存在于任何最小树形图中的: 2:求出每个顶点的的最小入边: 3:判断该图是否存在最小树形图,由 1 可以判定,或者以图中顶点v作为根节点遍历该图 ...

  6. HDU6141(最小树形图)

    对最小树形图做个小小的总结: 1:清除自环,自环是不可能存在于任何最小树形图中的: 2:求出每个顶点的的最小入边: 3:判断该图是否存在最小树形图,由 1 可以判定,或者以图中顶点v作为根节点遍历该图 ...

  7. HDU4009(最小树形图)

    对最小树形图做个小小的总结: 1:清除自环,自环是不可能存在于任何最小树形图中的: 2:求出每个顶点的的最小入边: 3:判断该图是否存在最小树形图,由 1 可以判定,或者以图中顶点v作为根节点遍历该图 ...

  8. HDU2121(最小树形图的模版算法题)

    这个道题也是在看了大神之后敲的,我也是刚刚学习这个 ^ _ ^,看来离大佬们的距离还是太远了:以下内容也是在学习大佬讲解的内容之后,根据大佬们的详细讲解中总结出来的! 贪心算法.可以想到每次都找每个点 ...

  9. 模板 - 最小树形图(朱刘算法)

    整理的算法模板合集: ACM模板 目录 给定一个根的有向图的最小树形图 为给定根的树形图 判断无解的方法 给定一个根的有向图的最小树形图 给定包含 n 个结点,m 条有向边的一个图.试求一棵以结点 r ...

最新文章

  1. Linux登录安全及用户操作审计 ,linux下清理日志脚本
  2. 泛型技巧系列:简单类型选择器
  3. 工作七年后,我梳理了自己的产品工作流程
  4. POJ3020深度解析(二分图--最小路径覆盖)
  5. 电脑CPU选购的几个指标
  6. qemu-img创建qcow2虚拟磁盘的预分配策略
  7. 2017年SEO推广优化怎么做
  8. [译] 美国证券法对 ICO 及相关 Fund 的最新动态
  9. RMAN-06217: 错误
  10. 众里寻他千百度,蓦然回首,那人却在灯火阑珊处
  11. mysql查询自然周_Hive和MySQL中自然周保持一致的方法
  12. 二进制加法器原理c语言,加法器电路原理_二进制加法器原理_与非门二进制加法器...
  13. cesiumlab v3.0.2—通用模型切片
  14. 如何评价柏拉图_哲学家如何看待死亡?|读柏拉图《斐多篇》(1)
  15. Epicor系统二次开发
  16. 【Django】admin的save_modle方法重写-20220803
  17. 将openwrt软路由装进U盘中并运行
  18. 数据库:试图删除被依赖对象
  19. python爬虫能当副业吗?有哪些平台能接单?
  20. 好物推荐:2020 年常用软件锦集!帮你解决 90% 的软件问题

热门文章

  1. php require 500,thinkphp5出现500错误怎么办
  2. 疲劳容器的定义_材料疲劳
  3. 设计模式之模版方法模式demo
  4. 线程其实就是一个个指令组成的,当这个线程内的指令全部执行完了,那么这个线程也就执行结束了
  5. html中input两个圆括号,如何使用Jquery将光标聚焦在两个括号(括号)之间?
  6. PHP外部引用样式,PHP引用外部css有什么好处
  7. 硬件:关于ARM的22个常用概念!
  8. 开发中常用的一些神器推荐
  9. HTTP消息中Header头部信息整理
  10. eureka 其它语言_SpringCloud之Eureka-Go语言中文社区