Intelligence System

HDU - 3072

题意:一个人要传递命令给所有人,如果两人之间互达,不需任何费用,求最少费用

有向图强连通。

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 const int inf=0x3f3f3f3f;
 4 const int maxv=50010;
 5 const int maxe=100010;
 6 int n,m;
 7 struct Edge{
 8     int u,v,w;
 9     int nex;
10 }e[maxe<<1];
11 int head[maxv];
12 int cnt=0;
13 void init(){
14     memset(head,-1,sizeof(head));
15     cnt=0;
16 }
17 void add(int u,int v,int w){
18     e[cnt].u=u;
19     e[cnt].v=v;
20     e[cnt].w=w;
21     e[cnt].nex=head[u];
22     head[u]=cnt++;
23 }
24 int pre[maxv],sccno[maxv],low[maxv],dfsk,scc_cnt;
25 stack<int> s;
26 void dfs(int u){
27     s.push(u);
28     low[u]=pre[u]=++dfsk;
29     for(int i=head[u];i!=-1;i=e[i].nex){
30         int v=e[i].v;
31         if(!pre[v]){
32             dfs(v);
33             low[u]=min(low[u],low[v]);
34         }
35         else if(!sccno[v]) low[u]=min(low[u],pre[v]);
36     }
37     if(low[u]==pre[u]){
38         scc_cnt++;
39         for(;;){
40             int x=s.top();
41             s.pop();
42             sccno[x]=scc_cnt;
43             if(x==u) break;
44         }
45     }
46 }
47 void find_scc(int n){
48     memset(pre,0,sizeof(pre));
49     memset(sccno,0,sizeof(sccno));
50     memset(low,0,sizeof(low));
51     dfsk=scc_cnt=0;
52     for(int i=0;i<n;i++) if(!pre[i]) dfs(i);
53 }
54 int d[maxv];
55 int main(){
56     while(scanf("%d%d",&n,&m)!=EOF){
57         init();
58         int u,v,w;
59         for(int i=0;i<m;i++){
60             scanf("%d%d%d",&u,&v,&w);
61             add(u,v,w);
62         }
63
64         find_scc(n);
65
66         for(int i=1;i<=scc_cnt;i++) d[i]=inf;
67         for(int i=0;i<n;i++){
68             for(int j=head[i];j!=-1;j=e[j].nex){
69                 int a=sccno[e[j].u];
70                 int b=sccno[e[j].v];
71                 if(a!=b) d[b]=min(d[b],e[j].w);  //不互达,费用取最小的
72             }
73         }
74         int ans=0;
75         for(int i=1;i<=scc_cnt;i++)
76             if(d[i]!=inf) ans+=d[i];
77         printf("%d\n",ans);
78     }
79 }

View Code

转载于:https://www.cnblogs.com/yijiull/p/7390664.html

Intelligence System HDU - 3072(强连通分量)相关推荐

  1. HDU 4635(强连通分量分解

    题目:给出一个有向图,要求添加最多的边数,使得图仍然不强连通. 思路:首先这个图在添加边之后肯定变成了两个强连通分量,现在就看怎么分.然后我们可以注意到,原图进行强连通分量分解之后必然存在一些分量的出 ...

  2. UVa 12167 HDU 2767 强连通分量 Proving Equivalences

    题意:给出一个有向图,问最少添加几条有向边使得原图强连通. 解法:求出SCC后缩点,统计一下出度为0的点和入度为0的点,二者取最大值就是答案. 还有个特殊情况就是本身就是强连通的话,答案就是0. 1 ...

  3. hdu 5420 Victor and Proposition 线段树建图+强连通分量

    题意: http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=620&pid=1003 题目求有多少对互为充要 ...

  4. HDU 4685 Prince and Princess(二分图+强连通分量)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4685 题意:给出n个王子和m个公主.每个王子有一些自己喜欢的公主可以匹配.设最大匹配为M.那么对于每个 ...

  5. 有向图 加最少的边 成为强连通分量的证明 poj 1236 hdu 2767

    poj 1236: 题目大意:给出一个有向图, 任务一: 求最少的点,使得从这些点出发可以遍历整张图  任务二: 求最少加多少边 使整个图变成一个强连通分量. 首先任务一很好做, 只要缩点 之后 求 ...

  6. hdu 1269(Tarjan求强连通分量)

    这道题目就是求强连通分量... 这里采用的是Tarjan算法:http://m.blog.csdn.net/blog/qq574857122/16361033 AC代码: #include<io ...

  7. Strongly connected HDU - 4635(tarjan+强连通分量)

    题意: 给一个简单有向图,让你加最多的边,使他还是一个简单有向图. 题目: Give a simple directed graph with N nodes and M edges. Please ...

  8. HDU 5934:Boom——强连通分量+缩点

    [题目描述] There are N bombs needing exploding.Each bomb has three attributes: exploding radius ri, posi ...

  9. 【HDU - 4635】Strongly connected(缩点,新图性质,建图,Tarjan求强连通分量)

    题干: Give a simple directed graph with N nodes and M edges. Please tell me the maximum number of the ...

最新文章

  1. android 快速点击开启某功能(不如快速点击打开开发者模式)
  2. VC CListCtrl 第一列列宽自适应
  3. 图解一次Linux挂载操作和mount命令基本用法
  4. 【Windows10下OpenCV 3.4.0 + Visual Studio 2015开发环境的配】
  5. Java调用ElasticSearch 7.2.1 保存、统计、多字段分组聚合
  6. [导入]Ajax初试
  7. 【Java从入门到头秃专栏 8】语法篇(七) :反射 动态代理 注解
  8. 用DOM方式读取xml
  9. Maven和Eclipse整合
  10. 利用Python批量修改多个ass字幕文件
  11. windows是第几代计算机,第几代cpu不支持win7?全面分析第几代cpu不支持win7
  12. 网络安全----数字签名与数字证书
  13. android 滤镜lomo,iOS滤镜实现之LOMO(美图秀秀经典LOMO)(示例代码)
  14. C语言:习题3-2 高速公路超速处罚.2021-07-27
  15. 中画幅相机焦距水平视角_摄影中的“中画幅”是什么?
  16. Repeater的 Items属性、Items里面的控件有几个?
  17. 妇女节手抄报Word电子小报
  18. DataStage History
  19. sci期刊发表文章注意事项
  20. 人工智能之搜索策略-A*算法进阶

热门文章

  1. 怎么看so文件是哪个aar引进来的_突破微信限制,超大文件可以随便发
  2. 为什么不建议学python贴吧_为什么那么多自学Python的后来都放弃了,分析起来就这些原因...
  3. python下载大文件mp4_python 实现视频流下载保存MP4的方法
  4. 大学计算机实验报告2,大学计算机基础实验报告2.doc
  5. html怎么用脚本显示隐藏,使用隐藏状态而不是注释或自定义脚本标记来模板化HTML...
  6. MyEclipse和Eclipse中修改编码
  7. python opencv录制视频_Python-OpenCV 处理视频(一)(二): 输入输出 视频处理
  8. html5 职工入职后台管理系统_【开源】Net平台的后台管理系统
  9. python gui界面设置数据储存在哪里_Python写GUI
  10. python输出函数是什么_Python中打印函数使用概述,python,print,用法,总结