HDU-3072-IntelligenceSystem(tarjan,贪心)
链接:https://vjudge.net/problem/HDU-3072
题意:
给你n个点,1个点到另一个点连接花费c,但是如果几个点可以相互可达,则这几个点连通花费为0.
求将整个图连通的最小花费。
思路:
tarjan,求出强连通子图。
对每个子图的进点的最小值更新,再累加即可,(不过不知道为什么)
代码:
#include <iostream>
#include <memory.h>
#include <string>
#include <istream>
#include <sstream>
#include <vector>
#include <stack>
#include <algorithm>
#include <map>
#include <queue>
#include <math.h>
#include <cstdio>
#include <set>
#include <iterator>
#include <cstring>
using namespace std;typedef long long LL;
const int MAXN = 5e4+10;
const int INF = 0x3f3f3f3f;struct Node
{int from_, to_, value_;Node(int from, int to, int value):from_(from), to_(to), value_(value){}bool operator < (const Node &that) const{return this->value_ > that.value_;}
};vector<Node> G[MAXN];
stack<int> St;
int Dfn[MAXN], Low[MAXN];
int Vis[MAXN], Dis[MAXN];
int Fa[MAXN], Val[MAXN];
int Num[MAXN];
int n, m;
int times, cnt;void Init()
{for (int i = 1;i <= n;i++)G[i].clear(), Fa[i] = i;memset(Dfn, 0, sizeof(Dfn));memset(Low, 0, sizeof(Low));memset(Vis, 0, sizeof(Vis));memset(Dis, 0, sizeof(Dis));memset(Num, 0, sizeof(Num));memset(Val, 0, sizeof(Val));times = cnt = 0;
}void Tarjan(int x)
{Dfn[x] = Low[x] = ++times;Vis[x] = 1;St.push(x);for (int i = 0;i < G[x].size();i++){int node = G[x][i].to_;if (Dfn[node] == 0){Tarjan(node);Low[x] = min(Low[x], Low[node]);}else if (Vis[node] == 1)Low[x] = min(Low[x], Dfn[node]);}if (Low[x] == Dfn[x]){cnt++;Num[cnt] = 0;while (St.top() != x){Num[cnt]++;Fa[St.top()] = cnt;Vis[St.top()] = 0;St.pop();}Num[cnt]++;Fa[St.top()] = cnt;Vis[St.top()] = 0;St.pop();}
}int main()
{int t, cn = 0;while (~scanf("%d%d", &n, &m)){Init();int l, r, v;for (int i = 1;i <= m;i++){scanf("%d%d%d", &l, &r, &v);l++, r++;G[l].emplace_back(l, r, v);}for (int i = 1;i <= n;++i)if (!Dfn[i])Tarjan(i);for (int i = 1;i <= cnt;i++)Val[i] = INF;for (int i = 1;i <= n;i++){for (int j = 0;j < G[i].size();j++){int node = G[i][j].to_;if (Fa[i] != Fa[node])Val[Fa[node]] = min(Val[Fa[node]], G[i][j].value_);}}int res = 0;for (int i = 1;i <= cnt;i++)if (Val[i] != INF)res += Val[i];cout << res << endl;}return 0;
}
转载于:https://www.cnblogs.com/YDDDD/p/10822851.html
HDU-3072-IntelligenceSystem(tarjan,贪心)相关推荐
- Intelligence System HDU - 3072(强连通分量)
Intelligence System HDU - 3072 题意:一个人要传递命令给所有人,如果两人之间互达,不需任何费用,求最少费用 有向图强连通. 1 #include <bits/std ...
- HDU 4714 Tree2cycle:贪心
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4714 题意: 给你一棵树,添加和删除一条边的代价都是1.问你将这棵树变成一个环的最小代价. 题解: 贪 ...
- HDU 5385 The path(贪心、构造、最短路径树)
HDU 5385 题目大意:给定一个图,dis表示第i个点到1点的最短路,dis1=0,给有向图上的边赋权值(1~n)满足dis1<dis2<dis3<--<disk>d ...
- HDU.3177Crixalis's Equipment(贪心)
题目来源:3177 题目分析:一只蝎子要搬动一堆装备到一个容量为V的洞里面,每个装备有两个属性,一个是固有体积A,放置之后洞的剩余空间就会减少A,一个是移动体积B,只有当体积B小于等于当前洞的剩余体积 ...
- hdu 4547(LCA+Tarjan)
解题思路:很明显的LCA问题,用Tarjan离线算法即可.这里输入的可能是字符串,所以直接用map保存.此外,根据题意,这里需要稍稍有点变化,因为cd:a\b\c...这里是一步即可完成,所以在查询a ...
- hdu 1269(Tarjan求强连通分量)
这道题目就是求强连通分量... 这里采用的是Tarjan算法:http://m.blog.csdn.net/blog/qq574857122/16361033 AC代码: #include<io ...
- 2019 年百度之星·程序设计大赛 - 初赛一Game HDU 6669 (实现,贪心)
Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissi ...
- HDU - 5976 Detachment(贪心思维)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5976 题意:把一个数拆成若干个不相同的数之和,问这些数的乘积最大是多少. 思路:一般要使乘积最大,那么 ...
- HDU 5976 Detachment 题解(贪心+逆元+前缀和,积)
个人体会:无脑取模,最为致命!因为把存放前缀和的数组取了模,导致一些本来不等的元素变成了相同的元素,二分搜索出错...而且C++会T,G++就ac了.. http://acm.hdu.edu.cn/s ...
- HDU 5214 Movie【贪心】
题意:给出n,l[1],r[1],a,b,c,d 其中 l[i]=l[i-1]*a+b,r[i]=r[i-1]*c+d; 问能否从这n个区间中选出不相交不重叠的三个区间 看的题解 先考虑最左边的区间, ...
最新文章
- android ui布局开发,Android UI设计初步(基本布局)
- SPOJ 375. Query on a tree (树链剖分)
- 《javascript设计模式》笔记之第十章 和 第十一章:门面模式和适配器模式
- 挑个很吉利的日子,开通我的博客!
- 当前完整路径_详解关键路径法,这可能是你找得到最详细的了
- jz指令是什么意思_S7-200 SMART 运动控制指令详解-电气阿伟带小白启程
- 如何在 Mac 上的 Pages 文稿中格式化文本栏?
- 喜提 300w 硬核资产!
- Tomcat监控利器Probe
- ios13 文件 连接服务器 您已离线,iOS13,终于可以屏蔽系统更新了
- 【程序员学习运筹学】什么是运筹学
- 最大子段和问题【思路及实现】
- 如何测试webservice接口
- 2018最新手机号码正则表达式
- [Power--IC]电源管理IC-STNS01
- 微信与企业微信的十个区别
- java毕业生设计在线多媒体学习社区的设计与实现计算机源码+系统+mysql+调试部署+lw
- 图像处理-最常见面试题(必问)
- 比较实用的几种端口入侵
- linux下7zip解压工具,Linux_Linux中的压缩软件7-zip的使用教程,7-zip 是一个开源压缩软件。它 - phpStudy...
热门文章
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_07 缓冲流_4_缓冲流的效率测试_复制文件...
- [Bootstrap]7天深入Bootstrap(1)入门准备
- SQL window身份登陆 SQL server不能登陆
- 【转】在birt中显示条形码
- 《Python》 字典
- 聚类-----高斯混合模型
- Java学习:多线程
- 使用javascript实现html页面直接下载网盘文件
- 程序员算法之找出链表的第K个结点
- 064 import和from...import