HDU 1827 Summer Holiday——————(Kosaraju求强连通分量,缩点)

深入解析Apollo自动驾驶平台scripts子模块架构与设计模式 在大型软件工程与自动化运维领域,脚本化管理和自动化流水线是提升开发效率、保证环境一致性的关键技术。其核心原理在于通过分层设计与模块化封装,将复杂的系统依赖和构建流程抽象为可重复执行的命令,从而降低开发者的认知负担。这种模式的技术价值在于实现了环境配置、代码编译、容器管理等生命周期的标准化,尤其适用于像自动驾驶这类依赖复杂、组件众多的异构系统。通过应用工厂方法、外观模式等经典设计模式,脚本架构能够提供统一入口并隐藏底层复杂性。在Apollo自动驾驶平台中,scripts子模块正是这一理念的典范实践,它作为平台 阅读详情

Summer Holiday

Time Limit: 10000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 4954 Accepted Submission(s): 2207

Problem Description
To see a World in a Grain of Sand
And a Heaven in a Wild Flower,
Hold Infinity in the palm of your hand
And Eternity in an hour.
—— William Blake

听说lcy帮大家预定了新马泰7日游,Wiskey真是高兴的夜不能寐啊,他想着得快点把这消息告诉大家,虽然他手上有所有人的联系方式,但是一个一个联系过去实在太耗时间和电话费了。他知道其他人也有一些别人的联系方式,这样他可以通知其他人,再让其他人帮忙通知一下别人。你能帮Wiskey计算出至少要通知多少人,至少得花多少电话费就能让所有人都被通知到吗?

Input
多组测试数组,以EOF结束。
第一行两个整数N和M(1<=N<=1000, 1<=M<=2000),表示人数和联系对数。
接下一行有N个整数,表示Wiskey联系第i个人的电话费用。
接着有M行,每行有两个整数X,Y,表示X能联系到Y,但是不表示Y也能联系X。

Output
输出最小联系人数和最小花费。
每个CASE输出答案一行。

Sample Input
12 16
2 2 2 2 2 2 2 2 2 2 2 2
1 3
3 2
2 1
3 4
2 4
3 5
5 4
4 6
6 4
7 4
7 12
7 8
8 7
8 9
10 9
11 10

Sample Output
3 6


就是先用Kosaraju算法缩点,缩点之后再对每一个强连通分量求出消耗的最小值
最后找入度为0的强连通分量,把它们的消耗值加起来

#include<bits/stdc++.h>
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<string>
#include<stack>
#include<queue>
#include<vector>
#include<deque>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int INF  = 0x3f3f3f3f;
const int MAXN = 1e5+7;
int V;
int cost[MAXN], used[MAXN], cmp[MAXN],ind[MAXN], Cost[MAXN];
vector<int>  G[MAXN];
vector<int> rG[MAXN];
vector<int> vs;

void add_edge(int from, int to)
{
        G[from].push_back(to);
        rG[to].push_back(from);
}

void dfs(int v)
{
        used[v] = true;
        for(int i=0;i<(int)G[v].size();++i)
                if(!used[G[v][i]])      dfs(G[v][i]);
        vs.push_back(v);
}

void rdfs(int v, int k)
{
        used[v] = true;
        cmp[v]  = k;
        for(int i=0;i<(int)rG[v].size();++i)
                if(!used[rG[v][i]])     rdfs(rG[v][i], k);
}

int scc()
{
        memset(used, 0, sizeof(used));
        vs.clear();
        for(int i=0;i<V;++i)
                if(!used[i])    dfs(i);

        int k=0;
        memset(used, 0, sizeof(used));
        for(int i=vs.size()-1;i>=0;--i)
                if(!used[vs[i]])        rdfs(vs[i], k++);
        return k;
}

int main()
{
        // freopen("../in.txt","r",stdin);
        // freopen("../out.txt","w",stdout);
        ios::sync_with_stdio(0);
        cin.tie(0);
        int n,m;
        while(cin>>n>>m)
        {
                V = n;
                int x,y;
                for(int i=0;i<V;++i)
                {
                        cin>>cost[i];
                        G[i].clear();
                        rG[i].clear();
                }
                for(int i=0;i<m;++i)
                {
                        cin>>x>>y;
                        add_edge(x-1,y-1);
                }
                memset(Cost, 0x3f, sizeof(Cost));
                int N = scc();
                for(int i=0;i<V;++i)
                        Cost[cmp[i]] = min(Cost[cmp[i]], cost[i]);
                // for(int i=0;i<V;++i)
                //         cout<<i+1<<" "<<cmp[i]+1<<endl;
                // cout<<"---------"<<endl;
                memset(ind, 0, sizeof(ind));
                for(int v=0;v<V;++v)
                {
                        for(int i=0;i<(int)G[v].size();++i)
                        {
                                if(cmp[v]==cmp[G[v][i]])       continue;
                                        ind[cmp[G[v][i]]]++;
                        }
                }
                int sum = 0, num = 0;
                for(int i=0;i<N;++i)
                {
                        // cout<<i+1<<" "<<ind[i]<<endl;
                        if(ind[i]==0)
                        {
                                // cout<<i+1<<endl;
                                num++;
                                sum += Cost[i];
                        }
                }
                cout<<num<<" "<<sum<<endl;
        }
        return 0;
}

【数据集】waymo motion dataset介绍与数据解析可视化 waymo motion数据集下载,数据描述,数据特征和地图特征,数据解析并完成数据可视化 阅读详情

相关推荐

极空间NAS小白也能搞定的Gitea部署:Docker+MySQL避坑全记录

本文为极空间NAS用户提供了一份详尽的Gitea私有代码仓库部署指南。针对极空间ARM架构和图形化Docker管理的特殊性,文章重点讲解了如何通过Docker和MySQL容器进行部署,并提供了三种获取兼容镜像的实战策略,特别是利用第三方镜像站转录的方法,帮助小白用户成功搭建并初始化Gitea服务,实现私有Git托管。

weixin_28318011的博客 366

hdu 1827(tarjan)

先用tarjan缩点, 然后入度为0的点就是必须要选择点同时也是最小的情况。 Summer Holiday Time Limit: 10000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1098    Accepted Submission(s): 474 Pr...

weixin_34050389的博客 216

Seedance 2.5本地部署指南:AI生图与视频生成的完整实践

最近在AI生成内容领域,本地部署方案越来越受到开发者关注。特别是Seedance 2.5的发布,让很多原本依赖云端服务的用户开始转向本地化解决方案。本文将从实际使用角度出发,完整介绍Seedance 2.5的本地部署流程、功能特性对比以及实际应用技巧。 1. Seedance 2.5核心特性解析 1.1 什么是Seedance 2.5 Seedance 2.5是一款开源的AI生图和视频生成工具,支持在本地环境运行,无需联网即可实现高质量的图像和视频生成。相比之前的2.0版本,2.5在生成质量、运行效率和功能

weixin_42566121的博客 1673

HDU1827(强连通分量)

强连通图:在有向图中,任意节点除法都可以到达其余所有节点,则称为强连通图。 强连通分量:在非强连通图的有向图中,选取部分点为强连通图,该强连通子图称为强连通分量。 注意:这道题只给出的是Wiskey和其他n个人之间联系需要花费,如果Wiskey联系u,u联系v之间是不需要花费的;而且之间的联系是单向的。 #include<iostream> #include<algorithm> #include<cmath> #include<cstring> #inclu

Keep_Trying_Go的博客 522

ESP32学习,驱动LED点阵屏,SD卡播放GIF动图

搬运就可以实现效果,如果有不足,请批评指正。下步该学一下如何文章上视频了,老是截图不方便展示效果。

u011625956的博客 1868

魔改xjar支持springboot3,

其实这里基本就没问题了,实际项目中只要把这个spring-core包从私仓中替换,项目加密也就没有太大的毛病,但是这样对于追求完美的我来说,方便性还差点。原因找到了,看了下springboot github的issue,官方确实变更了,原因是因为springboot2中的。xjar项目文档还是不错的,clone下来,跟着文档,很容易就测试并通过了我的测试项目,于是便推给其他同事使用了。方法,那么问题来了,为啥springboot2没问题,spring3读取出来的却又是加密的,这是为毛?

jioulongzi的专栏 1538

hdu1827(tarjan缩点)

Summer Holiday Time Limit: 10000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4410    Accepted Submission(s): 2015   Problem Description To see a World in...

a670531899的博客 279

STM32F407与AD7766实战:如何用SPI+DMA实现高速ADC数据采集(附完整代码)

本文详细介绍了如何利用STM32F407的SPI接口与DMA控制器,高效稳定地驱动24位高精度ADC芯片AD7766,实现高速连续数据采集。通过对比传统中断方式的瓶颈,阐述了SPI+DMA方案如何大幅降低CPU负载,并提供了从硬件设计、CubeMX配置到核心驱动代码的完整实战指南,帮助工程师解决高速ADC数据采集中的性能难题。

weixin_29281941的博客 187

SpringCloud Eureka做服务治理和 Eureka注册中心集群搭建 及 自我保护机制

SpringCloud Eureka做服务治理和 Eureka注册中心集群搭建 及 自我保护机制 一、注册中心 注册中心可以说是微服务架构中的”通讯录“,它记录了服务和服务地址的映射关系。在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,就到这里找到服务的地址,进行调用。 举个现实生活中的例子,比如说,我们手机中的通讯录的两个使用场景: 当我想给张三打电话时,那我需要在通讯录中按照名字找到张三,然后就可以找到他的手机号拨打电话。李四办了手机号,那么他把手机号告诉我,我把李四的号码存进通讯录,后续,

小毕超博客 3506

适航规章、标准,书籍资料下载汇总(更新中)

以下是一些收集到的适航相关的资料,分享给大家。(如果没有你想要的资料,请留言,等找到会及时更新!

qq_41854911的博客 2550

从0到1用OpenClaw打造酒店收益管理系统:数据整合→AI策略迭代全链路落地实战

本文基于三亚某连锁海景酒店真实项目落地经验编写,系统上线3个月,酒店平均入住率从62%提升至80%,RevPAR(平均可售房收入)提升26%,淡季空置率降低46%,完全覆盖中小酒店全场景收益管理需求。本文配套OpenClaw全量Skill代码、工作流配置文件,可直接复用落地。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 492

hdu-1827

Summer Holiday Time Limit: 10000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4273    Accepted Submission(s): 1936   Problem Description To see a World in...

qq_37064135的博客 357

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

hdu 1827 Summer Holiday (强连通Kosaraju法)

题意: 输入n、m ,n表示人数和联系对数。联系不同人的花费不同,需要找到花费最少为多少。 思路:找到强连通分支(标记同一分支中的点),然后每个分支中最多只需要联系一个人即可,但若两个分支中有联系则只需联系其中一个花费小的,即将每个分支看做一个点,找分支间的出、入度关系。 #include #include #define size 1010 #define INF 1000000000

1693

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

hdu1827Summer Holiday

图的连通性。

Achiberx 1213

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

hdu 1827 Summer Holiday【强连通Kosaraju+缩点染色+思维】

Summer Holiday Time Limit: 10000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2714    Accepted Submission(s): 1270 Problem Description To see a World

mengxiang000000 941

HDU 1827 Summer Holiday (Tarjan + 缩点)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1827 思路:求出所有的SCC,将一个SCC看作一个节点,取入度为0的SCC数量为联系人数,每个入度为0的SCC中取花费最小者加到答案中。 Tarjan同样是求SCC的算法,比起Kosaraju更为高级,虽然同样是O(V+E),但是常数更小。原理是,利用和求割点相同的方法,最远祖先相同的点属于同一个SCC之中。 #include <bits/stdc++.h> using namespace std;

TK_wang_的博客 267

HDU 1827 Summer Holiday

To see a World in a Grain of Sand And a Heaven in a Wild Flower, Hold Infinity in the palm of your hand And Eternity in an hour. —— William Blake 听说lcy帮大家预定了新马泰7日游,Wiskey真是高兴的夜不...

weixin_44705665的博客 143

HDU1827:Summer Holiday(缩点 & 贪心)

Summer Holiday Time Limit: 10000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3909    Accepted Submission(s): 1764 Problem Description To see a W

junior19的博客 328

hdu1269迷宫城堡 hdu 1827Summer Holiday

这两题都是强连通。。 上午刚开过,下午放学后就趁热打铁,把这两道题也给解决了。。。 只要把kosaraju的意思理解了,用起来会很顺手的,,对于这一类的题目只需要稍微改下就可以了。。 对于1269题,很明显强连通,,只需要判断Bcnt就行了,判断有多少了强连通分支。。。 1827题,Wiskey只需要和 入度为0的强连通分支打电话。。。 对于这样的强连通分支找到打电话所耗的费用最少的一个...

weixin_34187822的博客 109

Summer Holiday HDU - 1827(tarjan缩点)

题目:听说lcy帮大家预定了新马泰7日游,Wiskey真是高兴的夜不能寐啊,他想着得快点把这消息告诉大家,虽然他手上有所有人的联系方式,但是一个一个联系过去实在太耗时间和电话费了。他知道其他人也有一些别人的联系方式,这样他可以通知其他人,再让其他人帮忙通知一下别人。你能帮Wiskey计算出至少要通知多少人,至少得花多少电话费就能让所有人都被通知到吗? 先解释一下缩点(反正我刚开始不知道啥叫缩点...

Alanrookie的博客 459

Summer Holiday HDU - 1827 强连通分量+缩点

To see a World in a Grain of Sand And a Heaven in a Wild Flower, Hold Infinity in the palm of your hand And Eternity in an hour. —— William Blake 听说lcy帮大家预定了新马泰7日游,Wiskey真是高兴的夜不...

jinduo16的博客 251

HDU1827(Summer Holiday)

Summer Holiday                          Problem Description To see a World in a Grain of Sand And a Heaven in a Wild Flower, Hold Infinity in the palm of your hand And Eternity in an hour. —— William Blake 听说lcy帮大家预定了新马泰7日游,Wiskey真是高兴的夜不能寐啊,他想着得快点把这消息告诉大家,

weixin_43808717的博客 203

HDU - 1827 Summer Holiday(强连通分量+贪心)

题目大意:To see a World in a Grain of Sand And a Heaven in a Wild Flower, Hold Infinity in the palm of your hand And Eternity in an hour. ―― William Blake 听说lcy帮大家预定了新马泰7日游,Wiskey

静静地码 2225

hdu 1827

把一个强联通分量缩成一个点,点的话费是分量中所有点的话费的最小值,看新图中入度为0的点有多少个,把这些点的话费加起来就行 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #include <s...

qq_41646772的博客 187

hdu acm 1827 Summer Holiday

Summer Holiday Time Limit: 10000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2384    Accepted Submission(s): 1120 Problem Description To see a World

人生如梦,浮华一瞬间的专栏 725
上一篇: POJ 2186 Popular Cows——————(Kosaraju求强连通分量,缩点)
下一篇: HDU 2767 Proving Equivalences——————Kosaraju求强连通分量
陶鸿杰
博客等级 码龄9年 93粉丝 298原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值