HDU - 3072 Intelligence System
题意:
给出一个N个节点的有向图。图中任意两点进行通信的代价为路径上的边权和。如果两个点能互相到达那么代价为0。问从点0开始向其余所有点通信的最小代价和。保证能向所有点通信。
题解:
求出所有的强连通分量,然后进行缩点操作。最后贪心的找出每个点的最小代价,然后求和。
- #include <iostream>
- #include <cstdio>
- #include <vector>
- #include <cstring>
- #include <algorithm>
- using namespace std;
- typedef long long ll;
- const int maxn = 5e4+;
- const int inf = 0x3f3f3f3f;
- int n, m;
- struct node {
- int u, v, w;
- }e[maxn<<];
- vector<int> g[maxn];
- vector<int> rg[maxn];
- vector<int> vs;
- bool vis[maxn];
- int cmp[maxn], in[maxn];
- ll ans;
- void add_edge(int u, int v) {
- g[u].push_back(v);
- rg[v].push_back(u);
- }
- void dfs(int u) {
- vis[u] = true;
- int len = g[u].size();
- for(int i = ; i < len; i++) {
- int v = g[u][i];
- if(!vis[v]) dfs(v);
- }
- vs.push_back(u);
- }
- void rdfs(int u, int k) {
- vis[u] = true;
- cmp[u] = k;
- int len = rg[u].size();
- for(int i = ; i < len; i++) {
- int v = rg[u][i];
- if(!vis[v]) rdfs(v, k);
- }
- }
- int scc() {
- memset(vis, , sizeof(vis));
- vs.clear();
- for(int u = ; u < n; u++) {
- if(!vis[u]) dfs(u);
- }
- memset(vis, , sizeof(vis));
- int k = ;
- int len = vs.size();
- for(int i = len-; i >= ; i--) {
- int v = vs[i];
- if(!vis[v]) rdfs(v, k++);
- }
- return k;
- }
- int main() {
- while(~scanf("%d%d", &n, &m)) {
- ans = ;
- for(int i = ; i < n; i++) {
- g[i].clear();
- rg[i].clear();
- }
- for(int i = ; i <= m; i++) {
- scanf("%d%d%d", &e[i].u, &e[i].v, &e[i].w);
- add_edge(e[i].u, e[i].v);
- }
- n = scc();
- for(int i = ; i < n; i++) in[i] = maxn;
- for(int i = ; i <= m; i++) {
- int u = cmp[e[i].u];
- int v = cmp[e[i].v];
- if(u!=v) in[v] = min(in[v], e[i].w);
- }
- for(int i = ; i < n; i++) ans += in[i];
- printf("%lld\n", ans);
- }
- }
HDU - 3072 Intelligence System的更多相关文章
- HDU 3072 Intelligence System (强连通分量)
Intelligence System Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- HDU 3072 Intelligence System(tarjan染色缩点+贪心+最小树形图)
Intelligence System Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- hdu 3072 Intelligence System(Tarjan 求连通块间最小值)
Intelligence System Time Limit : 2000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) ...
- HDU——3072 Intelligence System
Intelligence System Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- HDU——T 3072 Intelligence System
http://acm.hdu.edu.cn/showproblem.php?pid=3072 Time Limit: 2000/1000 MS (Java/Others) Memory Limi ...
- hdoj 3072 Intelligence System【求scc&&缩点】【求连通所有scc的最小花费】
Intelligence System Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- Intelligence System (hdu 3072 强联通缩点+贪心)
Intelligence System Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- Intelligence System
Intelligence System Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- HDU 3072 SCC Intelligence System
给出一个带权有向图,要使整个图连通.SCC中的点之间花费为0,所以就先缩点,然后缩点后两点之间的权值为最小边的权值,把这些权值累加起来就是答案. #include <iostream> # ...
随机推荐
- JavaScript_DOM学习篇_图片切换小案例
今天开始学习DOM操作,下面写一个小案例来巩固下知识点. DOM: document object model (文档对象模型) 根据id获取页面元素 : 如: var xx = document.g ...
- POJ1286 Necklace of Beads(Polya定理)
Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 9359 Accepted: 3862 Description Beads ...
- 汇编:1位16进制数到ASCII码转换
;============================ ;1位16进制数到ASCII码转换 ; { X+30H (0≤X≤9) ;Y= { ; { X+37H (0AH≤X≤0FH) DATAS ...
- JS简写
本文来源于多年的 JavaScript 编码技术经验,适合所有正在使用 JavaScript 编程的开发人员阅读. 本文的目的在于帮助大家更加熟练的运用 JavaScript 语言来进行开发工作. 文 ...
- source tree 使用心得
SourceTree 是 Windows 和Mac OS X 下免费的 Git 和 Hg 客户端管理工具,同时也是Mercurial和Subversion版本控制系统工具.支持创建.克隆.提交.pus ...
- POJ:3061-Subsequence(尺取法模板详解)
Subsequence Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 18795 Accepted: 8043 Descript ...
- 0x01.被动信息收集
被动信息收集 基于公开渠道,不与目标系统产生直接交互,尽量避免留下痕迹(不进行大量扫描,正常交互范围) 信息收集内容 IP段 域名 邮件地址(定位邮件服务器,分为个人搭建和公网邮件系统) 文档图片数据 ...
- Linux下添加桌面快捷方式
这里用Ubuntu下BurpSuite举例 sudo vim /home/user/Desktop/burpsuite.desktop //burpsuite随意起名,系统会系动创建文件 文件写入 # ...
- label标签的作用
在用户注册的时候,常常用户点击文字就需要将光标聚焦到对应的表单上面,这个是怎么实现的呢?就是下面我要介绍的<label>标签的for属性 定义:for 属性规定 label 与哪个表单元素 ...
- mongo创建数据库和用户
1.linux安装mongo conf文件配置: 配置文件: dbpath=/home/data/mongodb/mongodb logpath=/home/data/logs/mongodb.log ...