HDU 3836Equivalent Sets——————Kosaraju求强连通分量

推荐系统(1):推荐系统评测 对于可以离线优化的指标,我个人的看法是应该在给定覆盖率、多样性、新颖性等限制条件下,尽量优化预测准确度。用一个数学公式表达,离线实验的优化目标是:最大化预测准确度使得 覆盖率 > A多样性 > B新颖性 > C其中,A、B、C的取值应该视不同的应用而定。 阅读详情

Equivalent Sets

Problem Description
To prove two sets A and B are equivalent, we can first prove A is a subset of B, and then prove B is a subset of A, so finally we got that these two sets are equivalent.
You are to prove N sets are equivalent, using the method above: in each step you can prove a set X is a subset of another set Y, and there are also some sets that are already proven to be subsets of some other sets.
Now you want to know the minimum steps needed to get the problem proved.

Input
The input file contains multiple test cases, in each case, the first line contains two integers N <= 20000 and M <= 50000.
Next M lines, each line contains two integers X, Y, means set X in a subset of set Y.

Output
For each case, output a single integer: the minimum steps needed.

Sample Input
4 0
3 2
1 2
1 3

Sample Output
4
2


这道题目和HDU2767差不多,只不过没有T罢了
缩点之后,求入度为0的点的个数,出度为0点的个数,取最大值

#include<bits/stdc++.h>
using namespace std;
const int MAXN = 1e5+7;
int cmp[MAXN], ind[MAXN], outd[MAXN], V;
bool used[MAXN];
vector<int> G[MAXN];
vector<int> rG[MAXN];
vector<int> vs;

void add_edge(int x,int y)
{
        G[x].push_back(y);
        rG[y].push_back(x);
}


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 v=0;v<V;++v)
                if(!used[v])    dfs(v);
        memset(used, 0, sizeof(used));
        int k = 0;
        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);
        int n, m;
        while(cin>>n>>m)
        {
                V = n;
                for(int i=0;i<=n;++i)
                {
                        G[i].clear();
                        rG[i].clear();
                }
                for(int i = 0; i < m; ++i)
                {
                        int x, y;
                        cin>>x>>y;
                        add_edge(x-1,y-1);
                }
                int N = scc();
                if(N==1)
                {
                        cout<<0<<endl;
                        continue;
                }
                memset(ind, 0, sizeof(ind));
                memset(outd,0,sizeof(outd));
                for(int v = 0; v < V; ++v)
                        for(int i = 0;i < (int)G[v].size(); ++i)
                                if(cmp[v]!=cmp[G[v][i]])
                                {
                                        ind[cmp[G[v][i]]]++;
                                        outd[cmp[v]]++;
                                }
                int num1 = 0;
                int num2 = 0;
                for(int i = 0; i < N; ++i)
                {
                        if(!ind[i])      num1++;
                        if(!outd[i])     num2++;
                }
                cout<<max(num1, num2)<<endl;
        }
        return 0;
}

⭐⭐⭐全网最详细YOLOv8教程,从环境配置到自己训练,再到数据集的制作,包的各位⭐⭐⭐ 问题原因:当你“pip install ultralytics” 时,torch和torchvision会作为它的依赖一起安装了,当执行“pip install torch torchvision torchaudio --index-url。”时,会卸载torch,然后再安装torch+cuda版本,但是不会自动卸载torchvision已有版本,然后再安装torchvision+cuda版本。🎉🎉🎉恭喜各位道友,已经可以训练模型了,现在就是制作自己的数据集,所谓申神通秘境,随心所欲,万物皆可识别也 阅读详情

相关推荐

从零开始:如何用Kimi OK Computer快速生成专业级数据分析报告和PPT(附实战案例)

本文详细介绍了如何利用Kimi OK Computer智能体模式,从零开始快速生成专业级数据分析报告和演示文稿。通过实战案例,解析了其任务规划、联网搜索、多工具协同和内容排版等核心能力,并提供了精准指令构造、工作流引导及成果精修的完整步骤,帮助用户高效完成从数据到成品的端到端交付。

weixin_29284201的博客 370

HDU 3836 Equivalent Sets(强连通分量)

思路:和HDU2726基本一样 #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define maxn 20000

围巾的ACM博客 399

麒麟V10服务器多硬盘安装与分区实战:告别自动分区,手动分配/boot、swap和/根目录

本文详细介绍了麒麟V10服务器在多硬盘环境下的手动分区策略,包括/boot、swap和/根目录的优化分配方案。通过SSD与HDD混合存储架构的合理规划,提升系统性能和运维效率,适用于企业级定制化系统部署需求。

weixin_26976635的博客 407

Equivalent Sets(HDU 3836)---加边成强连通分量

题目链接 题目描述 To prove two sets A and B are equivalent, we can first prove A is a subset of B, and then prove B is a subset of A, so finally we got that these two sets are equivalent. You are to prove ...

weixin_43960284的博客 257

乐鑫WIFI芯片开发流程梳理-工具链、编译和下载

最近开始基于乐鑫ESP32的WIFI模组的软件开发,首先要做整套流程的梳理,乐鑫官网以及安信可上已经有了较为系统的资料,但是在实现过程中也遇到了一些问题,花了几天去解决,所以为了总结,也为了给其他人提供一些借鉴,把流程分享一下,官网上相对比较完善的,就不在赘述。 1. 开发方案选择 目前网上有两套较为成熟的方案: (1)基于乐鑫官网推荐的开发方式,原网页:https://docs.espress...

一名嵌入式软件工程师的自我成长 3926

华为OD机试双机位C卷-用户入网定期复评(C/C++/Py/Java/Js/Go)

华为OD机试(机考)双机位C卷 【用户入网定期复评】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【用户入网定期复评】。

qq_45776114的博客 837

HDU 3836 —— Equivalent Sets

原题:http://acm.hdu.edu.cn/showproblem.php?pid=3836 题意:问至少要加几条边,使得该图强连通(即图中任意两点都连通); 思路:先求原图的强连通分量,然后进行缩点构建新图,在新图中,求入度 = 0 和 出度 = 0 的个数,两者的最大值即为答案; #include #include #include #include using n

0x3f3f3f3f 455

我的AI个人公司成立:基于Skills与Qwen大模型的智能问答平台实战开发+龙虾团队

微学AI推出数字员工矩阵,包含10个核心AI角色(总经理、秘书、工程师等),每个角色具备专属技能模块。系统采用FastAPI+Vue3技术栈,核心功能包括:基于SkillLoader的动态技能管理(支持脚本执行和文档加载)、WebSocket流式输出、多轮对话上下文管理。通过模块化架构实现AI自驱协作,可自主完成从需求分析到开发落地的全流程。项目亮点在于声明式技能配置和实时交互能力,打破传统办公壁垒,提升工作效率。

微学AI的博客 1624

HDU 3836 - Equivalent Sets【强连通分量 基础题】

Description To prove two sets A and B are equivalent, we can first prove A is a subset of B, and then prove B is a subset of A, so finally we got that these two sets are equivalent. You are to p

MissZhou要努力 734

基于 STM32 的手持式安检金属探测器设计与实现

【代码】基于 STM32 的手持式安检金属探测器设计与实现。

weixin_42300449的博客 900

Google Gemini 模型本地可视化

Google近期发布了Gemini模型,而且开放了Gemini Pro API,Gemini Pro 可免费使用!Gemini Pro支持全球180个国家的38种语言,目前接受文本、图片作为输入并生成文本作为输出。Gemini Pro的表现超越了其他同类模型,当前版本配备了 32K 文本上下文窗口,可免费使用,且其定价将十分有竞争力。Gemini Pro具备丰富的功能:函数调用、数据嵌入、语义检索、自定义知识嵌入以及聊天功能。

HJ_blog 1246

HDU 3836 Equivalent Sets(tarjan + 压缩强连通)

大体题意: 告诉你如果证明A等于B,要证明A是B的子集,并且B是A的子集。 现在给你n 个集合,告诉m 个集合的关系,求在加多少个关系使得这N个集合相等? 思路: A是B的子集, 用 A到B有一条有向边来代替,那么这个问题就转换为了  在加多少边使得这个图强连通! 可以用tarjan算法求出所有的强连通分量,把每一个强连通分量压缩成一个点,这个点内部肯定是强连通,那么就是加边使得这些点强

aozil_yang的博客 545

基于数字图像处理方法的迷宫问题图解 : 基于骨架提取、四邻域

问题是,这条红色的线是人为标记出来的能通的路线,对计算机来看,黑色和红色的线没有任何差异,所以之前的想法压根不起作用。对应于数字图像的表达,就是从远离主干的分支端点出发,如果4邻域中只有一个可以通的道路,那么这个点在分支上。闪电划过,有一道连接了天空和大地,就是迷宫的解,其余的分支就是迷宫中对应的死路。类似这个闪电图,假设图中最粗的主干(迷宫解的路线)是最先形成的,其余的细小的分支是慢慢从主干上形成的。因此,只要在端点的4邻域中,找到可以走的道路,那么一定就是分支,也就是要移除的路线。

Henry的博客 2074

hdu 3836 Equivalent Sets(SCC,Kosaraju算法)

Equivalent Sets Time Limit: 12000/4000 MS (Java/Others)    Memory Limit: 104857/104857 K (Java/Others) Total Submission(s): 1951    Accepted Submission(s): 659 Problem Description To prove

WEYuLi的专栏 785

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

hdu 3836 Equivalent Sets【强连通Kosaraju+缩点染色】

Equivalent Sets Time Limit: 12000/4000 MS (Java/Others)    Memory Limit: 104857/104857 K (Java/Others) Total Submission(s): 3889    Accepted Submission(s): 1379 Problem Description To prove tw

mengxiang000000 657

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

POJ 1236 Network of Schools HDU 3836 Equivalent Sets 强连通分量+缩点 tarjan or kosaraju

1,POJ 1236 有一些学校连接到一个计算机网络,这些学校之间达成了一个协议:每个学校维护着一个学校列表,它向学校列表中的学校发布软件。注意,如果学校B在学校A的列表中,则A不一定在B的列表中。 任务A:计算为使得每个学校都能通过网络收到软件,至少需要准备多少份软件拷贝。 任务B:考虑一个更长远的任务,想确保给任意一个学校发放一个新的软件拷贝。该软件拷贝能发布到网络中的每个学校,为了达到

水 1072

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

HDU3836--Equivalent Sets(强连通+缩点)

题目就是告诉你有m条边是从u通向v的,问你至少添加多少条边之后,能形成一个强连通。模版题。 #include #include #include #include #include #include #include #define LL long long #define M 20005 using namespace std; vector G[M]; int dfn[M],

慕枫幕影的专栏 931

HDU - 3836 Equivalent Sets ( 加边使其为强连通图

题目描述 To prove two sets A and B are equivalent, we can first prove A is a subset of B, and then prove B is a subset of A, so finally we got that these two sets are equivalent. You are to prove ...

Yishui_lovely 294

Equivalent Sets 【至少加几边使图为强联通】+【 scc +缩点】

To prove two sets A and B are equivalent, we can first prove A is a subset of B, and then prove B is a subset of A, so finally we got that these two sets are equivalent. You are to prove N sets are eq

lzs_lazy 780

HDOJ/HDU 3836 Equivalent Sets

题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3836 Problem Description To prove two sets A and B are equivalent, we can first prove A is a subset of B, and then prove B is a subset of A, so finally...

lilisalo 193

Equivalent Sets

Equivalent Sets Time Limit: 12000/4000 MS (Java/Others) Memory Limit: 104857/104857 K (Java/Others) Total Submission(s): 6755 Accepted Submission(s): 2435 Problem Description To prove two sets A...

青烟绕指柔的博客 831

Equivalent Sets(HDU-3836)

Problem Description To prove two sets A and B are equivalent, we can first prove A is a subset of B, and then prove B is a subset of A, so finally we got that these two sets are equivalent. You are ...

Alex_McAvoy的博客 339

hdoj 3836 Equivalent Sets

题目链接:Equivalent Sets题目大意:要证明两个集合A、B等价,需要得到X是Y的子集并且Y也是X的子集,现在有N个集合,M个条件,代表a是b的子集,问最少需要再添加多少条件使得所有N个集合都是等价的题目思路:X是Y的子集,也就是Y到X有一条有向边,那么题目就转换为了给你一个有向图,问最少添加多少条边使得所有的点都能到达任何另外的点,tarjan缩点,找出度为0和入度为0的最小值就可以了#

Nemaleswang的博客 616

hdu 3836 Equivalent Sets【强联通】

Equivalent Sets Time Limit: 12000/4000 MS (Java/Others)    Memory Limit: 104857/104857 K (Java/Others) Total Submission(s): 3065    Accepted Submission(s): 1077 Problem Description To prove tw

letterwuyu的专栏 857

[HDU] 3836 Equivalent Sets

题目大意为给定一张有向图,求加多少条边之后整个图是一张强连通分量。 思路大致是:先将图中的强连通分量缩点,使得图变成一张无环图,这个时候图上剩余k1个出度为0的点和k2个入度为0的点,将出度为0的点连一条有向边到入度为0的点,此时形成一个环,这个环是一个强连通分量,可以再缩成一个点,当图中只剩一个点的时候,就完成了任务。显而易见的是最大只要连接max{k1,k2}条边,就能将所有的点缩成一个点。...

weixin_30808253的博客 151
上一篇: HDU 2767 Proving Equivalences——————Kosaraju求强连通分量
下一篇: POJ 1182食物链————并查集复习
陶鸿杰
博客等级 码龄9年 93粉丝 298原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值