HDU 3072 SCC Intelligence System

给出一个带权有向图,要使整个图连通。SCC中的点之间花费为0,所以就先缩点,然后缩点后两点之间的权值为最小边的权值,把这些权值累加起来就是答案。

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <algorithm>
 4 #include <cstring>
 5 #include <vector>
 6 #include <stack>
 7 using namespace std;
 8 
 9 int n, m;
10 
11 const int maxn = 50000 + 10;
12 
13 vector<int> G[maxn], C[maxn];
14 
15 stack<int> S;
16 int pre[maxn], lowlink[maxn], sccno[maxn];
17 int dfs_clock, scc_cnt;
18 
19 void dfs(int u)
20 {
21     pre[u] = lowlink[u] = ++dfs_clock;
22     S.push(u);
23     for(int i = 0; i < G[u].size(); i++)
24     {
25         int v = G[u][i];
26         if(!pre[v])
27         {
28             dfs(v);
29             lowlink[u] = min(lowlink[u], lowlink[v]);
30         }
31         else if(!sccno[v]) lowlink[u] = min(lowlink[u], pre[v]);
32     }
33 
34     if(lowlink[u] == pre[u])
35     {
36         scc_cnt++;
37         for(;;)
38         {
39             int x = S.top(); S.pop();
40             sccno[x] = scc_cnt;
41             if(x == u) break;
42         }
43     }
44 }
45 
46 void find_scc()
47 {
48     dfs_clock = scc_cnt = 0;
49     memset(pre, 0, sizeof(pre));
50     memset(sccno, 0, sizeof(sccno));
51     for(int i = 0; i < n; i++) if(!pre[i]) dfs(i);
52 }
53 
54 int cost[maxn];
55 
56 int main()
57 {
58     while(scanf("%d%d", &n, &m) == 2)
59     {
60         for(int i = 0; i < n; i++) { G[i].clear(); C[i].clear(); }
61         while(m--)
62         {
63             int u, v, d; scanf("%d%d%d", &u, &v, &d);
64             G[u].push_back(v); C[u].push_back(d);
65         }
66         find_scc();
67 
68         memset(cost, -1, sizeof(cost));
69         for(int i = 0; i < n; i++)
70             for(int j = 0; j < G[i].size(); j++)
71             {
72                 int u = sccno[i], v = sccno[G[i][j]];
73                 if(u == v) continue;
74                 if(cost[v] == -1) cost[v] = C[i][j];
75                 else cost[v] = min(cost[v], C[i][j]);
76             }
77 
78         int ans = 0;
79         for(int i = 1; i <= scc_cnt; i++) if(cost[i] != -1) ans += cost[i];
80         printf("%d\n", ans);
81     }
82 
83     return 0;
84 }
代码君

 

转载于:https://www.cnblogs.com/AOQNRMGYXLMV/p/4718315.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/358404.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

再见,Springboot和SpringCloud

Java中说到微服务肯定离不开Spring Boot和Spring Cloud&#xff0c;这两者到底有什么关系&#xff0c;什么是微服务&#xff0c;如果单纯的说SpringBoot&#xff0c;SpringCloud&#xff0c;都是不准确的&#xff0c;那应该怎么回答。官网对于Spring Boot的介绍Spring Boot mak…

通过暴露出来的OA和github信息拿Shell

本文转载于https://xz.aliyun.com/t/10392 记一次授权渗透测试 一&#xff1a;信息收集阶段 因为目标是学校&#xff0c;一般会去考虑收集学号&#xff0c;教工号。因为有的登陆点需要此类信息&#xff0c;且密码存在规律性&#xff08;身份证后六位&#xff0c;123456&#xf…

表格内容排序(js实现)

http://tablesorter.com/docs/转载于:https://www.cnblogs.com/sunflower627/p/4718688.html

手机上可以编程看代码的软件

以后大家会在路上看到很多人拿着手机,他不是在聊天,他有可能是运维工程师、也可能是算法开发、也可能是java开发,还可能是客户端开发,也可能是前端开发... 让你编程一直在路上,这到底是程序员的福音,还是码农的枷锁。 粉丝提问: 这里介绍几款可以在手机上编程的app,分…

给你的执行力马上充值

“执行力就是在既定的战略和愿景的前提下,组织对内外部可利用的资源进行综合协调,制定出可行性的战略,并通过有效的执行措施从而最终实现组织目标、达成组织愿景的一种力量。执行力是一个变量,不同的执行者在执行同一件事情的时候也会得到不同的结果。执行力不但因人而异,而且还…

性能,可伸缩性和活力

本文是我们学院课程中名为Java Concurrency Essentials的一部分 。 在本课程中&#xff0c;您将深入探讨并发的魔力。 将向您介绍并发和并发代码的基础知识&#xff0c;并学习诸如原子性&#xff0c;同步和线程安全之类的概念。 在这里查看 &#xff01; 目录 1.简介 2.表现…

Java 压缩解压字符串(支持中文)

public static void main(String[] args) throws Exception{ String str "xflush3.0个人感觉最大的特点就是监控配置非常灵活&#xff0c;从日志的格式定义、收集、配置&#xff0c;都可以自定义&#xff1b;这样对于老应用的打点日志&#xff0c;不需要关心规则的定义就可…

BurpSuite v2021.8.2安装使用

文章前言 几个月之前&#xff0c;Burpsuit官方发布了BurpSuite v2021.8.2&#xff0c;但是迟迟没有时间来试试手&#xff0c;正好借着这次调休的时间来写写文章&#xff0c;顺便更新一下Burpsuite 软件下载 天翼云盘 极速安全 家庭云|网盘|文件备份|资源分享 软件安装 Step 1&a…

程序员赚钱资源汇总,结合自己亲身经历

知识计算机知识深入理解计算机系统-必修课&#xff0c;NB学校的NB课程的NB教材代码大全-&#xff08;不要被这个名字吓到&#xff0c;英文叫做 Code complete&#xff09;微软的书&#xff0c;几乎可以当作是软件工程的百科全书。很少有人完全精通甚至完成这本书中所有部分的学…

Hive高级用法汇总

1. 根据字符串分割实现一行变多行 关键字&#xff1a;LATERAL VIEW&#xff0c; explode&#xff0c;split SELECT ad_time_slice_index, SUM(impression_count) FROM base_tracking_logs LATERRAL VIEW EXPLODE(SPLIT(ad_time_slices,\\,)) adalias AS ad_time_slice_index WH…

Agrona的Threadsafe堆外缓冲区

这篇博客文章解释了我们如何为线程安全操作轻松提供对堆内存的访问&#xff0c;从而继续了我在Agrona库上进行的系列文章 。 在继续进行之前&#xff0c;我可能应该警告一下&#xff0c;这是一个相当高级的主题&#xff0c;并且我不会尝试解释诸如内存屏障之类的概念&#xff0…

逍遥模拟器配置burpsuite抓包环境

电脑与逍遥模拟器处于同一网段&#xff0c;在burpsuite中设置代理&#xff1a; 之后在逍遥模拟器中设置网络代理 之后直接下载下面的证书并且将其拖放到逍遥模拟器中&#xff1a; 证书下载地址&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1qJmcKcVj3NqmrWKf6zb83g …

在线演示一下HTML的各种实例,打发无聊的时间

这段时间入职了一家外包公司,比较闲,好像是去驻场开发做金融保险的项目,我应聘的是前端工程师的岗位,要准备刷题,听说考的范围比较广,我是电子商务专业的,本身学的就比较广,没事做做html的实例打发无聊的时间。有兴趣的可以关注我的公众号:电商程序员。各种资源都有,…

OC本学习笔记Foundation框架NSString与NSMutableString

一、NSString与NSMutableString 相信大家对NSString类都不陌生。它是OC中提供的字符串类。它的对象中的字符串都是不可变的&#xff0c;而它的子类NSMutableString类的对象中的字符串就是可变的。什么是可变与不可变呢&#xff1f;二者的差别就是在已经创建的一个字符串…

phpMyAdmin渗透利用总结

phpMyAdmin渗透利用总结 前言 总结一下常见的phpmyadmin的漏洞利用姿势 简介 phpMyAdmin 是一个以PHP为基础&#xff0c;以Web-Base方式架构在网站主机上的MySQL的数据库管理工具&#xff0c;让管理者可用Web接口管理MySQL数据库。借由此Web接口可以成为一个简易方式输入繁杂…

SQL之条件判断专题

Case when (case when 情况1 then 结果1 when 情况1 then 结果1 else &#xff0b;剩余结果 end ) 列名 IF表达式 IF(判断内容&#xff0c;0&#xff0c;1) SELECT IF( sex1&#xff0c;男 &#xff0c;女 )sex from student IFNULL表达式 IF(判断内容&#xff0c;x) 假如判…

使用所有对象通用的方法

本文是我们名为“ 高级Java ”的学院课程的一部分。 本课程旨在帮助您最有效地使用Java。 它讨论了高级主题&#xff0c;包括对象创建&#xff0c;并发&#xff0c;序列化&#xff0c;反射等。 它将指导您完成Java掌握的过程&#xff01; 在这里查看 &#xff01; 目录 1.简…

前端工程师面经——概述及面试技巧加考点篇(一)

这段时间受到疫情的影响,本身做java开发的,面试了入职了一个外包公司的前端岗位,入职属于驻场开发的那种,前几周基本没啥事,一般经理会让你刷题,到了驻场那边需要机试过关才能在那边开发,这边在牛客网,LeetCode等平台找点前端的题做一做顺便记录,仅供参考,那边做的是…

Struts2漏洞和Struts Scan工具实战

一、Apache Struts 2漏洞背景 1.漏洞详情 2017年3月6日&#xff0c;Apache Struts 2被曝存在远程命令执行漏洞。在使用基于Jakarta插件的文件上传功能条件下&#xff0c;恶意用户可以通过修改HTTP请求头中的Content-Type值构造恶意代码&#xff0c;在服务器上执行系统命令&…

39 网络相关函数(七)——live555源码阅读(四)网络

39 网络相关函数(七)——live555源码阅读(四)网络 39 网络相关函数(七)——live555源码阅读(四)网络 简介14)readSocket从套接口读取数据recv/recvfrom 函数 函数原型&#xff1a;参数说明&#xff1a;返回说明&#xff1a;本文由乌合之众 lym瞎编&#xff0c;欢迎转载 blog.cn…