POJ 2186 Popular Cows(强联通分量)

POJ2186-Popular Cows【Tarjan+极大强连通分量+缩点】 POJ2186-Popular Cows 【Tarjan+极大强连通分量+缩点】 解题报告+AC代码 http://hi.youkuaiyun.com/!s/BGDH68 附:我所有的POJ解题报告链接 . http://blog.youkuaiyun.com/lyy289065406/article/details/6642573 立即下载

在这里插入图片描述


题意:
给出n头牛,m个关系,关系x,y表示牛x喜欢牛y,如果x喜欢y,y喜欢z,那么x也喜欢z。
是否存在一些牛,其他所有牛都喜欢他。


明显,如果是一个大的联通分量,那么他们相互喜欢,如果有几个联通分量,那么如果有两个或两个以上的联通分量没有指向其他联通分量,那么这样的牛是不存在的,如图:

在这里插入图片描述
所以我们出了计算联通分量,还要存放,某个联通分量有多少个牛组成,以及这个联通分量有没有出度,如果这样的牛存在,那么它所在的联通分量必然出度为0,并且只有1个出度为0的联通分量。

//POJ_2186_Popular Cows 
#include<algorithm>
#include<string.h>
#include<iostream>
using namespace std;
const int maxn=1e5+6;
int sum[maxn],col[maxn],outdeg[maxn],sta[maxn];
int n,m,tim,cnt,Count,top,head[maxn],dfn[maxn],vis[maxn],low[maxn];

struct node
{
    int to,nxt;
};
node edge[500005];
void init(){
    memset(head,-1,sizeof(head));
    tim=cnt=top=Count=0;
    for(int i=0;i<=n;i++)
        sum[i]=col[i]=outdeg[i]=sta[i]=dfn[i]=vis[i]=low[i]=0;
}
void add(int u,int v){
    edge[cnt].to=v;
    edge[cnt].nxt=head[u];
    head[u]=cnt++;
}
void tarjian(int u){
    vis[u]=1;
    dfn[u]=low[u]=tim++;
    sta[++top]=u;
    for(int i=head[u];i!=-1;i=edge[i].nxt){
        int v=edge[i].to;
        if(vis[v]==0) tarjian(v);
        if(vis[v]==1) low[u]=min(low[u],low[v]);
    }
    if(low[u]==dfn[u]){
        Count++;
        do{
            col[sta[top]]=Count;//属于第几个联通分量
            sum[Count]++;//该联通分量有几个节点
            vis[sta[top]]=-1;
        }while(sta[top--]!=u);//出栈
    }
}
int main(){
    while (scanf("%d%d",&n,&m)!=EOF)
    {
        int x,y;
        init();
        for(int i=0;i<m;i++){
            scanf("%d%d",&x,&y);
            add(x,y);
        }
        for(int i=1;i<=n;i++)
            if(!vis[i]) tarjian(i);
        for(int i=1;i<=n;i++){
            for(int j=head[i];j!=-1;j=edge[j].nxt){
                int v=edge[j].to;
                if(col[i]!=col[v])    //i与它指向的点不是同一个联通分量
                    outdeg[col[i]]++; //i所在的联通分量出度++
            }
        }
        int ans = 0,flag=0;//利用flag 来标记是第几次出度为0;
        for (int i = 1; i <=Count; i++)
        {
            if(flag && outdeg[i]==0){//如果falg =1 后,说明已经有了一个出度为0的,如果再有,ans=0;
                ans=0;break;
            }
            if(!flag && outdeg[i]==0){//开始 flag =0  此时如果有出度为0的,那么ans有了
                ans=sum[i];
                flag=1;
            }
        }
        printf("%d\n",ans);
        
    }
    

    return 0;
}
别再只调API了!深度拆解Dify文件上传的两种传参方式(sys.file vs. inputs.upload_file) 本文深度解析Dify平台文件上传的两种传参方式——sys.file与inputs.upload_file,详细对比其设计原理、技术实现及适用场景。通过代码示例和性能分析,帮助开发者在本地大模型应用中做出精准技术选型,提升文件处理效率与系统稳定性。 阅读详情

相关推荐

JS自动化生成大疆WPML航线文件实战(附完整代码与云台控制解析)

本文详细介绍了如何利用JavaScript自动化生成大疆WPML航线文件,以解决手动规划航线效率低、易出错的问题。通过解析WPML文件结构,特别是云台控制等核心参数,并封装可复用的JS模板函数,开发者能够快速批量生成复杂航线,如倾斜摄影五向飞行,实现航测与巡检任务的标准化与高效执行。

weixin_29007243的博客 299

POJ2186 Popular Cows(Tarjan算法)

2186 Accepted 1708K 625MS C++ 2318B 用STL写的,哈哈,居然没有超时,很欣慰啊,贴出来大家参考一下…… /* 后来看了别人的代码后发现,其实可以找到强连通分量之后, 把其

284

WinInet 编程:MFC 中的互联网编程

WinInet 是一套 Windows API(应用程序编程接口),用于实现互联网应用程序的网络通信和数据传输。WinInet 抽象了底层网络协议和硬件细节,为程序员提供了一套统一的接口,简化了互联网应用程序的开发过程。WinInet 广泛应用于各种 Windows 应用程序中,包括网页浏览器、下载管理器、网络游戏等。MFC WinInet 是一套强大的类库,为 MFC 程序员提供了在 Windows 平台上实现互联网通信和数据传输的工具。

JAZJD的博客 1636

POJ -2186 Popular Cows

Popular Cows 题目传送门 -009 Description Every cow’s dream is to become the most popular cow in the herd. In a herd of N (1 <= N <= 10,000) cows, you are given up to M (1 <= M <= 50,000) ordere...

GG_Bond的博客 191

图像去雾新思路:手把手教你复现DEA-Net中的“细节增强卷积”与PyTorch实现

本文详细解析了DEA-Net中的'细节增强卷积'(DEConv)与PyTorch实现,通过多分支差分卷积和重参数化技术,显著提升单图像去雾效果。文章从数学原理到代码实现,手把手指导复现这一创新架构,帮助开发者在保持轻量化的同时实现41dB以上的PSNR指标,适用于自动驾驶、遥感监测等关键领域。

weixin_30323631的博客 505

(MATLAB)一维信号峰值检测findpeaks

一维信号波峰波谷检测,峰值、峰宽、到达时间计算。MATLAB自带的findpeaks函数能完成这一任务,在这里分享其基本用法与特殊用法。

HPC_ZY 2万+

POJ 2186 Popular Cows (两种方法)

Popular Cows Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 19083   Accepted: 7675 Description Every cow's dream is to become the most popular cow in the herd...

weixin_34163553的博客 200

MATLAB自动驾驶(1)——预构建场景库

MATLAB自动驾驶(1)——预构建场景库

Ucicorn Gundam的博客 3265

poj2186 popular cows

tarjan+并查集缩点

YHaX的博客 524

鱼眼相机矫正实战:除了棋盘格,试试横向展开和经纬度法(OpenCV4/C++实现对比)

本文对比了鱼眼相机矫正的三种主流方法:棋盘格标定法、横向展开法和经纬度法,通过OpenCV4/C++实战代码解析,帮助开发者在自动驾驶、VR全景拼接和安防监控等场景中选择最适合的技术方案。重点分析了各方法的精度、处理速度和适用场景,为工程实践提供实用指导。

weixin_29032489的博客 283

YOLOv8性能提升:引入华为GhostNetv1特征提取网络

本文提出一种轻量化改进方案,将GhostNetV1作为YOLOv8的主干网络,以提升移动端部署效率。通过Ghost模块的两步特征生成机制(初级卷积+廉价操作),显著降低了30%的计算量(FLOPs)和参数量,精度损失控制在1%以内。实验表明,改进后的模型在骁龙865芯片上推理速度提升25%。核心创新包括:1)用GhostBottleneck替换CSP模块;2)保留FPN+PAN结构确保多尺度检测能力;3)提供完整的PyTorch实现方案。该工作为资源受限场景的目标检测提供了实用解决方案,未来可结合注意力机制

shrgegrb的博客 1180

tarjan算法 求解强联通分量 POJ_2186_Popular Cows

算法介绍 如果两个顶点可以相互通达,则称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。非强连通图有向图的极大强连通子图,称为强连通分量(strongly connected components)。 下图中,子图{1,2,3,4}为一个强连通分量,因为顶点1,2,3,4两两可达。{5},{6}也分别是两个强

持之以恒_fighting 1337

Coze实战:解锁多Bot协同与条件分支工作流的奥秘

本文详细介绍了在字节跳动Coze平台实现多Bot协同与条件分支工作流的方法。首先阐述了Coze平台的功能优势,包括丰富的插件、知识库和工作流功能。随后分步骤讲解了多Bot协同的实现:从准备工作、创建Bot到协同配置,并提供了电商客服的实例演示。在条件分支工作流部分,详细说明了条件节点的作用类型、条件设定方法以及具体配置操作,强调测试优化的重要性。最后通过电商平台综合案例,展示了多Bot协同与条件分支的实际应用效果,并针对常见问题提供解决方案。文章为开发者在Coze平台上构建智能应用提供了实用指导,有助于提升

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 449

POJ 2186 Popular Cows Kosaraju求强联通分量

POJ 2186 Popular Cows 强联通分量 题目链接: POJ 2186 Popular Cows  题意:给定N个顶点M条边的有向图。边具有传递性。如A到B连通,B到C连通,那么A到C也是连通的。求有多少个顶点满足其他所有顶点到该顶点都连通。 思路:先求出强联通分量,缩点,强连通分量内所有的点都是相互连通的,然后所有的缩点构成一个DAG(有向无环图),如果图中要存在顶点满足

Fighting! 918

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

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

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

POJ 2186 Popular Cows (强联通分量)

链接 :http://poj.org/problem?id=2186 一个联通分量里的所有的牛满足任何一个被其他牛认为是红人。强联通缩点之后 只需要找到一个且只有一个联通分量且它的出度为0 答案就是这个强联通分量点的个数。 #include #include #include #include #include #include #include #include

__ElemenT 625

温度PID控制PLC程序

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

POJ 2186 Popular Cows(强联通分量)

题目链接:http://poj.org/problem?id=2186 题目大意: 每一头牛的愿望就是变成一头最受欢迎的牛。现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎。 这 种关系是具有传递性的,如果A认为B受欢迎,B认为C受欢迎,那么牛A也认为牛C受欢迎。你的任务是求出有多少头 牛被所有的牛认为是受欢迎的。 解题思路: 假设有两头牛A和B都被其他所有...

weixin_30555753的博客 110

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

POJ 2186-Popular Cows (图论-强联通分量Korasaju算法)

题目链接:http://poj.org/problem?id=2186 题目大意:有n头牛和m对关系, 每一对关系有两个数(a, b)代表a牛认为b牛是“受欢迎”的,且这种关系具有传递性, 如果a牛认为b牛“受欢迎”, b牛认为c牛“受欢迎”, 那么a牛也认为c牛“受欢迎”。 现在想知道有多少头牛受除他本身外其他所有牛的欢迎? 解题思路:如果有两头或者多头牛受除他本身外其他所有牛的欢...

den11551的博客 174

POJ 2186 Popular Cows(强联通分量缩点)

Popular Cows Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 40402   Accepted: 16448 Description Every cow's dream is to become the most popular cow in the herd. In a he...

GYH0730的博客 193

POJ_2186_Popular Cows(强联通分量)

Popular Cows  POJ - 2186  Every cow's dream is to become the most popular cow in the herd. In a herd of N (1 &lt;= N &lt;= 10,000) cows, you are given up to M (1 &lt;= M &lt;= 50,000) ordered pairs ...

JiaYao的博客 383

POJ 2186 Popular cows(Kosaraju+强联通分量模板)

题目链接:http://poj.org/problem?id=2186 题目大意:给定N头牛和M个有序对(A,B),(A,B)表示A牛认为B牛是红人,该关系具有传递性,如果牛A认为牛B是红人,牛B认为牛C是红人,那么牛A也认为牛C是红人。求被其他所有牛认为是红牛的牛的总数。 解题思路:把所有牛看成顶点,把有序对(A,B)看成从A到B的有向边,那么题目就变成了求所有顶点都可到达的顶点的...

weixin_30951231的博客 140

POJ 2186 Popular Cows (Tarjan 有向图,强联通分量)

 求所有点都能够到达的点。 也就是强联通缩点之后,找出度为 0  的点。 如果出度为 0 的点之后一个,那这个点所在的圈的所有点的数量就是答案。 如果,出度为 0 的点不止一个,那么就无解 输出 0  #include &lt;iostream&gt; #include &lt;cstdio&gt; #include &lt;cstring&gt; #include &lt;cmath&...

Top_xiao的博客 198

poj 2186 Popular Cows (强联通分量+缩点)

给出一些牛自己认为popular的牛,问那些牛是被所有牛认为popular的。 裸的强联通分量+缩点。 #include #include #include #include #include #include #include #include #include using namespace std; #define B(x) (1<<(x)) typedef long long ll

ACM之梦 502

POJ 2186 Popular Cows(强联通分量缩点+tarjan算法)

Popular Cows Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 30846   Accepted: 12531 Description Every cow's dream is to become the most popular cow in the her

Coldplay 575

POJ2186 Popular Cows【Tarjan】【强连通分量】

题目大意:每头奶牛都希望自己成为最欢迎的那头牛。给你N头牛,M个崇拜关系(A,B)。 意思是牛A崇拜牛B。特别是,如果牛A崇拜牛B,牛B崇拜牛C,那么牛A也崇拜牛C。那么 问题来了:请计算出被所有牛崇拜的牛的个数。 思路:把崇拜关系(A,B)看做是一条有向边,并且,我们发现牛的崇拜关系具有传递性。那 么只要牛A有一条路径连向牛B,就可以判定牛A崇拜牛B。于是,被所有牛崇拜的牛就是所 有的点都存在一条路径连向它的有向路径。这道题中,将原图强连通分量缩点后构成了DAG, 那么如果新图中出度为0的点只有一个,则有

程序员充电站(itcharge) 1278

[POJ 2186]Popular Cows

题目链接:http://poj.org/problem?id=2186 题面 题意 有NNN只牛,有MMM条关系,每条关系(Ai_ii​,Bi_ii​)描述了Ai_ii​牛认为Bi_ii​牛受欢迎。这个关系是可传递的,即若A牛认为B牛受欢迎,B牛认为C牛受欢迎那么A牛也认为C牛受欢迎别问我为什么可传递,问就是题目需要。求所有牛都认为受欢迎的牛的数量。 思路 如果把(Ai_ii​,Bi_ii​)看成...

asdkjc的博客 126

POJ 2186 Popular Cows

题目链接:http://poj.org/problem?id=2186 题意:给你一些崇拜关系,崇拜关系可以传递(A->B, B->C, 则A->C),问有多少头牛是被其他所有牛都崇拜的,可以进行思考,一个强联通分量中,所有的牛都是被其他的牛崇拜的,也就是说我们可以先进行缩点,建立DAG图,然后建立好后,再思考,如果这个是一个联通的图,且只有一个出度为0的点的话,那么出度为0的点就是被其他所有的

RaAlGhul的博客 396
上一篇: HDU-5934 BOMB (强连通分量)
下一篇: [hdu 1111] Secret Code(dfs + 秦九韶算法)
yjr-1100
博客等级 码龄7年 338粉丝 77原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值