UVALIVE 4287 Proving Equivalences Tarjan求强连通分量

HHD Device Monitoring Studio:破解版在串口调试中的实战应用 本文详细介绍了HHD Device Monitoring Studio破解版在串口调试中的实战应用,包括安装指南、串口监控功能解析、Modbus RTU协议分析案例以及自定义协议解析技巧。通过具体操作步骤和性能优化建议,帮助开发者高效完成端口监控和调试任务,提升工作效率。 阅读详情

题目链接:https://vjudge.net/problem/UVALive-4287

题意:有n个命题,已知其中的m个推导,要证明n个命题全部等价(等价具有传递性),最少还需要做出几次

推导

解法:由已知的推导可以建一张无向图,则问题变成了最少需要增加几条边能使图变成强连通图。找出所有的

强连通分量,将每一个连通分量视作一个大节点,则整张图变成了一张DAG。设出度为0的大节点个数为a,

入度为0的大节点个数为b,则答案就是max(a,b)。为什么是这样呢?因为要使等价证明前进下去,每个大节

点的出度和入度都必须不能是0,注意特判整个图是强连通分量的情况

///UVALIVE 4287

#include <bits/stdc++.h>
using namespace std;
const int maxn = 20005;
int n, m, low[maxn], dfn[maxn], dfs_clk, scc, top;
int in[maxn], out[maxn], s[maxn], belong[maxn], head[maxn], edgecnt;
bool inq[maxn];
struct edge{
    int v, nxt;
    edge(){}
}E[maxn*4];
void init(){
    memset(head, -1, sizeof(head));
    edgecnt=0;
}
void add(int u, int v){
    E[edgecnt].v = v, E[edgecnt].nxt = head[u], head[u] = edgecnt++;
}
void tarjan(int x){
    int now=0;
    dfn[x]=low[x]=++dfs_clk;
    s[++top]=x; inq[x]=1;
    for(int i=head[x]; i+1; i=E[i].nxt){
        int to=E[i].v;
        if(!dfn[to]){
            tarjan(to);
            low[x]=min(low[x],low[to]);
        }
        else if(inq[to]){
            low[x]=min(low[x],dfn[to]);
        }
    }
    if(low[x]==dfn[x]){
        ++scc;
        while(now!=x){
            now=s[top];top--;
            belong[now]=scc;
            inq[now]=0;
        }
    }
}

int main(){
    int T; scanf("%d", &T);
    while(T--){
        scanf("%d%d", &n,&m);
        init();
        while(m--){
            int u, v;
            scanf("%d%d", &u,&v);
            add(u, v);
        }
        memset(inq, 0, sizeof(inq));
        memset(low, 0, sizeof(low));
        memset(dfn, 0, sizeof(dfn));
        memset(belong, 0, sizeof(belong));
        memset(in, 0, sizeof(in));
        memset(out, 0, sizeof(out));
        memset(s, 0, sizeof(s));
        dfs_clk = scc = top = 0;
        for(int i=1; i<=n; i++){
            if(!dfn[i]){
                tarjan(i);
            }
        }
        for(int i=1; i<=scc; i++){
            in[i] = out[i] = 0;
        }
        int a = 0, b = 0;
        for(int i=1; i<=n; i++){
            for(int j=head[i]; j+1; j=E[j].nxt){
                int v = E[j].v;
                if(belong[i]!=belong[v]){
                    out[belong[i]]=in[belong[v]]=1;
                }
            }
        }
        for(int i=1; i<=scc; i++){
            if(!in[i]) a++;
            if(!out[i]) b++;
        }
        int ans = max(a, b);
        if(scc==1){
            ans=0;
        }
        printf("%d\n", ans);
    }
    return 0;
}
Ubuntu+Dify实战:如何让大模型知识库完美支持图片召回(附避坑指南) 本文详细介绍了在Ubuntu系统上部署Dify平台,并实现大模型知识库图片召回功能的完整实战方案。通过解析Dify处理图片的底层逻辑,重点讲解了配置Nginx代理服务器将本地图片路径转换为可公开访问URL的核心工程步骤,并提供了文档预处理、环境变量配置以及父子分段策略等高级技巧,帮助开发者构建图文并茂的AI应用,有效提升知识库的丰富性和用户体验。 阅读详情

相关推荐

Voicebox本地部署:模型下载与离线模式实战指南

在本地语音处理场景中,模型下载失败和离线运行需求是开发者最常遇到的两大难题。理解语音工具的本地推理原理,关键在于掌握模型文件与程序逻辑的分离管理:模型独立下载,程序负责推理,输出留在本机。这种架构带来显著的技术价值——数据不出本地、不依赖公网、批量任务不中断。无论是语音识别转写、语音合成,还是集成到自动化脚本中,本地离线模式都能在隐私敏感或网络不稳定环境下稳定运行。对开发者而言,先解决模型文件的完整获取,再验证离线启动流程,就能绕过“无法下载模型”的常见坑。本文从环境准备、模型放置、服务启动到接口调用,提供

weixin_29048309的博客 309

Proving Equivalences UVALive 4287 图的强连通分量

Consider the following exercise, found in a generic linear algebra textb o ok. Let A be an n × n matrix. Prove that the following statements are equivalent: (a) A is invertible. (b) Ax = b h

香蕉麦乐迪的博客 860

RT_Thread Studio使用——USB虚拟串口(VCP)

RT_Thread Studio使用——USB虚拟串口(VCP)

weixin_44735205的博客 3374

UVALive - 4287 - Proving Equivalences(强连通分量)

Problem UVALive - 4287 -Proving Equivalences Time Limit: 3000 mSec Problem Description Input Output Sample Input 2 4 0 3 2 1 2 1 3 ...

weixin_30618985的博客 171

基于BS21的星闪模块设计电路SLE/BLE

基于BS21的星闪模块设计电路SLE/BLE HI2821

2503_91889531的博客 2740

【数据可视化-77】中国历年GDP数据可视化分析:Python + Pyecharts 深度洞察(含完整数据、代码)

通过上述可视化分析,我们可以清晰地看到中国历年GDP的变化趋势和产业构成。玫瑰图展示了2024年的产业构成,地图和柱状图展示了GDP的时空分布,双轴折线图和雷达图则分别展示了GDP总量与人均GDP的变化以及各行业的GDP贡献。希望这篇文章能帮助您更好地理解和分析中国历年GDP数据。如果您有任何问题或建议,欢迎在评论区留言!🎉。

qq_38614074的博客 1473

UVALive - 4287 Proving Equivalences

强连通分量缩点

The Blog Of Uncle_Sugar 309

OpenCloudOS9操作系统搭建Confluence8.2.1+Jira企业级WIKI

Atlassian Confluence是一个专业的企业知识管理与协同软件,可用于构建企业wiki

背锅神童的博客 1023

UVALive4287-- Proving Equivalences(SCC+Tarjan)

题目链接 题意:证明n个命题全部等价,已经给出m此推导,求至少还要几次推导才能完成整个证明。 思路:可以将命题看作结点,推导看作有向边,则本题就能转化为n个结点m条边的有向图。利用tarjan算法得到所有强连通分量,将这些强连通分量当作一个点,得到一个DAG。之后就可以求次数了。注意当强连通数量为1时,就代表着证明已经完成了。 代码: #include #incl

懒人一枚。 958

nicegui 可视化扩展库

总体来说,这段代码使用nicegui库创建了一个具有一些基本UI元素的界面,并使用扩展库来实现更多的布局功能。这段代码使用了nicegui库创建了一个UI界面。函数导入了一个扩展库,用于实现更多的布局功能。然后又使用了一个行布局,并添加了两个按钮(在UI界面中,使用了一个卡片(在行布局中依次添加了一个标签(在卡片中使用了一个头像(接下来使用了一个行布局(设置了背景颜色为绿色。设置了居中对齐和红色。设置了间距和字体大小。设置了居中对齐和样式。设置了按钮的对齐方式。

东方佑 1021

基于经验模态分解和核主成分分析结合长短期记忆网络EMD-KPCA-LSTM的光伏功率预测算法--Matlab

基于经验模态分解和核主成分分析结合长短期记忆网络EMD-KPCA-LSTM的光伏功率预测算法--Matlab

前程算法屋的博客 626

UVAlive4287 Proving Equivalences(scc)

题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=10294   【思路】        强连通分量。        求出bcc后,缩点形成DAG,设DAG上入度为0的点数为a 出度为0的点数为b,则ans=max(a,b) (互相到达,首尾相接),需要注意scc数为1的时候ans=0。   【代码】  

hahalidaxin的专栏 223

delphi 调用deepseek r1 api 并流式返回结果

摘要:本文展示了一个使用Delphi调用DeepSeek API的代码示例,包含两种调用方式:一次性获取结果和流式返回结果。代码实现了完整的API请求处理,包括HTTP客户端设置、JSON数据处理和UI界面交互。其中流式调用通过TStreamReader处理服务器发送事件(SSE),实时更新到TRichEdit控件并保持滚动条位置。文章还提到界面美化优化,为Delphi开发者提供了调用AI服务的实用参考方案。(150字)

全粘工程师 498

Proving Equivalences

trajan缩点

小红九さんの技術ブログ 486

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

UVALive 6913 I Want That Cake 博弈dp

题目链接:这里 DescriptionThere was an interesting game played on a popular Korean reality TV Show. 12 players in 3 teams — 4 persons in each team — lined up in one row in random order. The game master appr

I good vegetable a! 720

efm32 入门.pdf

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

UVALive 6912 Prime Switch 状压DP,贪心

题目链接:这里 题意:你有n盏灯,有m个开关,开关上面都写着一个质数。那么这个开关就控制着上面写着的数字的倍数。灯泡按奇数次就亮着,偶数次,就熄灭。问你最好情况下,最优有多少个灯亮着。 解法:对于小于等于31的素数,我们状压去跑dp,对于大于的,我们就贪心。因为大于31的素数一定是不会冲突的,因为上面的数乘起来就大于1000了。然后这样就行了。//UVALive 6912#include <bi

I good vegetable a! 628

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

UVALive-4793 Robots on Ice 搜索加剪枝

题意: #include using namespace std; const int maxn = 11; int dir[4][2]={{1,0},{0,1},{-1,0},{0,-1}}; int n, m, t; int x[5], y[5], c[5];//第i个检查点的坐标为(x[i],y[i]),访问时间为c[i] int mp[maxn][maxn];//存储网

I good vegetable a! 624

UVA 1048 Low Cost Air Travel

题目链接:https://vjudge.net/problem/UVA-1048 题意:给定一些联票,在给定一些行程,要求这些行程的最小代价 解法: #include using namespace std; const int Max_City = 200; const int Max_Ticket = 20; const int Max_TicketLength = 10;

I good vegetable a! 581

UVALive - 3490 Generator AC自动机+高斯消元

题目链接:https://vjudge.net/problem/UVALive-3490题意:随机字母组成一个串,有一个目标串,当这个由随机字母组成的串出现目标串就停止,求这个随机字母组成串的期望长度。解法:容易看出,dp[i] = 所有他下一步可能的节点dp[j]之和/m+1。可以想一下从头走到i的递推式,是dp[i] = 所有走到i这个节点的dp[j]+1。然后就可以列出n个方程,dp[最后一个

I good vegetable a! 573

UVALive 6910 Cutting Tree(并查集)

题目链接:https://vjudge.net/problem/UVALive-6910DescriptionTree in graph theory refers to any connected graph (of nodes and edges) which has no simple cycle, while forest corresponds to a collection of on

I good vegetable a! 557

UVALive 6906 Cluster Analysis 并查集

题目地址:见这里 DescriptionCluster analysis, or also known as clustering, is a task to group a set of objects into one or more groups such that objects belong to a same group are more similar compared to ob

I good vegetable a! 542

UVALive 6908 Electric Bike dp,BFS

题目链接:这里 题意:给了n段路,每段路长度不同,你有一辆车最多可以提供E的能量,你的车有四个档,最多换k次档 Assist Level 0 1 2 3 Assist Power 0 4 8 11 0档花费能量0,走的路程长度为0,1档花费1能量,走得最大路程为4…. ,每段路用一个档,如果这个档不能使你走完这段路,那么只能自己蹬,如果超过这段路长度,超过部分不计算到下一

I good vegetable a! 532

UVALive - 5135 Mining Your Own Business 双连通分量

题目链接:https://vjudge.net/problem/19845题意:有N个矿井 ,由一些隧道连接起来,现在要修建尽量少的安全通道,使得无论哪里发生事故,所有人均能逃出,求建的最少的安全通道数量和方案数解法:建安全通道的话,肯定不能建在割顶,因为割顶如果崩塌了,割顶所连接的双连通分量内的点就跑不掉了,还得在双连通分量里面再建点(上述为双连通分量内部只有一个割顶的情况),这样不划算,还不如直

I good vegetable a! 518

UVALive3713-Astronauts 2-SAT

题目链接:https://vjudge.net/problem/UVALive-3713题意:有A、B、C 3个任务分配给n个宇航员,其中每个宇航员恰好分配一个任务。假设n个宇航员的平均年龄为x,只有年龄大于x的才能领取A任务;只有年龄严格小于x的才能领取B任务,而任务C没有限制。有m对宇航员相互讨厌,因此不能分配同一任务。求出是否能找出符合的任务方案。解法:用xi表示第i个宇航员的分配方案。年龄大

I good vegetable a! 496

UVA 10288 Coupons

【解题方法】假设当前已经有k种不同的Coupons,那么获得新的Coupons的概率是(n-k)/n,所以需要步数的期望是n/(n-k)。求和可得到答案为nsigma(1/i)! 题目要求用分数表示,那么加个分数类重载就OK了! 【代码君】 #include #include #include #include #include using namespace std; long

I good vegetable a! 467

UVALive 3211 Now or later 二分+Twosat

题目链接:https://vjudge.net/problem/UVALive-3211题意:每架飞机有早晚起降两种方式,给定n架飞机两种方式的起落时间,为每架飞机安排起落时间(早或晚),使得所有飞机起降时间按照早到晚的顺序之间的间隔时间最小值尽量大。解法:最小时间尽量大应该采用二分的方法比较好,然后就变成了判别某个时间间隔m是不是符合要求的了。为没加飞机设立一个变量xi,0表示早,1表示晚,然后每

I good vegetable a! 455
上一篇: UVALive - 5135 Mining Your Own Business 双连通分量
下一篇: UVALive 3211 Now or later 二分+Twosat
just_sort
博客等级 码龄11年 2357粉丝 1667原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值