POJ 2186 Popular Cows (强连通分量)

POJ2186 Popular Cows 【强连通分量】+【Kosaraju】+【Tarjan】 /* Popular Cows ( POJ No.2186) 每头牛都想成为牛群中的红人。给定 N 头牛的牛群和 M 个有序对(A, B)。 (A, B)表示牛 A 认 为牛 B 是红人。该关系具有传递性,所以如果牛 A 认为牛 B 是红人,牛 B 认为牛 C 是红人, 那么牛 A 也认为牛 C 是红人。不过,给定的有序对中可能包含(A, B)和(B, C),但不包含(A, C)。 求被其他所有牛 阅读详情

POJ 2186 Popular Cows 


题意:每头奶牛都梦想着成为牧群中最受奶牛仰慕的奶牛。在牧群中,有N 头奶牛,1≤N≤10,000,给定M 对(1≤M≤50,000)有序对(A, B),表示A 仰慕B。由于仰慕关系具有传递性,也就是说,如果A 仰慕B,B 仰慕C,则A 也仰慕C,即使在给定的M 对关系中并没有(A, C)。你的任务是计算牧群中受每头奶牛仰慕的奶牛数量。

思路:首先可以知道,在同一个强连通分量内的点一定互相仰慕,所以可以先将强连通分量进行缩点。如果缩点之后的图不连通,一定是不行的。如果连通,那么该图就是一个DAG,若只有一个出度为0的点,那么该点内的牛都是,若有大于一个出度为0的点,那么这两个点一定不连通,所以不行。(在判断出度的时候,不连通的图已经包含在内了,所以不用特意处理)

代码:
/*
ID: wuqi9395@126.com
PROG:
LANG: C++
*/
#include<map>
#include<set>
#include<queue>
#include<stack>
#include<cmath>
#include<cstdio>
#include<vector>
#include<string>
#include<fstream>
#include<cstring>
#include<ctype.h>
#include<iostream>
#include<algorithm>
using namespace std;
#define INF (1<<30)
#define PI acos(-1.0)
#define mem(a, b) memset(a, b, sizeof(a))
#define rep(i, a, n) for (int i = a; i < n; i++)
#define per(i, a, n) for (int i = n - 1; i >= a; i--)
#define eps 1e-6
#define debug puts("===============")
#define pb push_back
#define mkp make_pair
#define all(x) (x).begin(),(x).end()
#define fi first
#define se second
#define SZ(x) ((int)(x).size())
#define POSIN(x,y) (0 <= (x) && (x) < n && 0 <= (y) && (y) < m)
typedef long long ll;
typedef unsigned long long ULL;
const int maxn = 10100;
vector<int> g[maxn];
int n, m, dfn[maxn], low[maxn], scc_cnt, dfs_clock, sccno[maxn];
int tot[maxn];
stack<int> s;
void dfs(int u) {
    low[u] = dfn[u] = ++dfs_clock;
    s.push(u);
    for (int i = 0; i < g[u].size(); i++) {
        int v = g[u][i];
        if (!dfn[v]) {
            dfs(v);
            low[u] = min(low[v], low[u]);
        } else if (!sccno[v]) low[u] = min(low[u], dfn[v]);
    }
    if (low[u] == dfn[u]) {
        scc_cnt++;
        while(1) {
            int x = s.top();
            s.pop();
            sccno[x] = scc_cnt;
            tot[scc_cnt]++;
            if (x == u) break;
        }
    }
}
void find_scc(int n) {
    mem(dfn, 0);
    mem(sccno, 0);
    scc_cnt = dfs_clock = 0;
    for (int i = 1; i <= n; i++) if (!dfn[i]) dfs(i);
}
int degree[maxn];
int work() {
    for (int u = 1; u <= n; u++) {
        for (int i = 0; i < g[u].size(); i++) {
            int U = sccno[u], V = sccno[g[u][i]];
            if (U != V) degree[U]++;
        }
    }
    int now = 0, cnt = 0;
    for (int i = 1; i <= scc_cnt; i++) if (!degree[i]) {
            now = tot[i];
            cnt++;
            if (cnt > 1) return 0;
        }
    return now;
}
int main () {
    scanf("%d%d", &n, &m);
    int u, v;
    while(m--) {
        scanf("%d%d", &u, &v);
        g[u].pb(v);
    }
    find_scc(n);
    printf("%d\n", work());
    return 0;
}


使用 Azure DevSecOps 和 AIOps 构建可扩展且安全的多区域金融科技 SaaS 平台 这家虚构的金融科技 SaaS 组织在 Microsoft Azure 上构建了一个现代化的多区域架构,以实现高可用性、主动安全性和简化的 DevSecOps 工作流。如果您是 DevOps 从业者、SRE 专业人士或致力于创建弹性、可扩展且安全的金融科技解决方案的技术领导者,您将从中获得可直接应用于您自身项目的见解和经验教训。与大多数快速扩张的金融科技公司一样,他们需要确保不间断的正常运行时间、坚不可摧的安全性以及快速的功能交付,以满足全球用户群的需求。即使是短暂的中断也会损害用户的信心和忠诚度。 阅读详情

相关推荐

南京邮电大学电工电子基础B实验六(组合逻辑电路)

南京邮电大学电工电子基础B实验五(组合逻辑电路);电工电子;南京邮电大学;计算机学院;实验报告;电路图;

亦是远方的小地方 1万+

POJ 2186-Popular Cows:强连通分量问题

点击打开链接 Popular Cows Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 19665   Accepted: 7970 Description Every cow's dream is to become the most pop

云淡风清 1142

STM32F407+LAN8720A+LwIP实战:FreeModbus TCP从机功能开发指南

本文详细介绍了基于STM32F407和LAN8720A硬件平台,结合LwIP协议栈实现FreeModbus TCP从机功能的开发指南。内容涵盖硬件连接、LwIP移植、FreeModbus TCP从机实现、任务调度及调试技巧,为工业控制领域的以太网通信开发提供实用参考。

weixin_29190651的博客 546

【poj 2186】Popular Cows(强连通分量)

传送门biu~ Tarjan缩点,如果图中出度为零的强联通分量数大于一,那么一定不符合题意,输出“0”;如果出度为零的强联通分量等于一,那么答案就是这个强联通分量所包含的点数。#include<bits/stdc++.h> using namespace std; int n,m,ch,ans; int head[10005],nex[50005],to[50005],tp; int dfn[10

zP1nG 560

差分隐私(Differential Privacy)

差分隐私,拉普拉斯机制和高斯机制的证明

Michale_L的博客 1万+

CanOpen PDO映射实战:从原理到配置的完整指南

本文详细解析了CanOpen PDO映射的原理与配置流程,从基础通信机制到实战配置步骤,涵盖禁用PDO、清空映射、逐项映射和使能PDO等关键环节。特别针对西门子G120变频器、台达伺服和倍福CX控制器等不同厂商设备,提供了具体的配置技巧和常见问题排查指南,帮助工程师快速掌握多厂商设备间的PDO通信配置。

weixin_30718391的博客 516

Popular Cows

题目 http://poj.org/problem?id=2186 题目大意 n个点m条边,求有多少个点可以去到所有点。 思路 这已经很直白了。只要用tarjan缩完点之后,这个图是棵树。若存在两个出度为0的,一定无解,因为肯定这两个点无法相同,否则就是那个出读为0的点的强联通块。...

Brute♂force 494

别再被 SerialPort 坑了!C# 串口通信的 3 大隐形陷阱与工业级解决方案

NET的SerialPort类更适合实验室调试,而非工业现场——它的设计目标是“能用”,而非“稳定”。工业级串口通信的核心,是在SerialPort基础上构建一层“防护壳”,用主动轮询对抗事件失效,用硬件级操作解决缓冲区谎言,用原子性流程避免关闭死锁。本文提供的类已在30+工业项目中验证(包括汽车生产线、智能仓储、环境监测),可直接替换原生SerialPort,解决90%以上的“玄学问题”。记住:工业场景的“稳定”,从来都不是靠运气,而是靠对每个细节的偏执把控。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 745

POJ2186 Popular Cows(强连通分量)

题意: 奶牛A觉得奶牛B流行,奶牛B觉得奶牛C流行,则奶牛A也觉得奶牛C流行,现在要统计被其他所有奶牛觉得流行的奶牛数量。 要点: 先求出强连通分量并缩成点,算出对应入度和出度,统计出度为0的奶牛数即可,一开始我是统计进度为cnt-1的,后来发现WA,错误的地方在题目里也说了,A->B->C这种也认为A觉得C流行,所以不能用入度算,只能计算出度为0的...

weixin_33862993的博客 175

Apple Store 上架过包:iOS审核4.3被拒原因分析与解决修改方案

Apple Store 上架过包:iOS审核4.3被拒原因分析与解决修改方案

专业解决各种上架过包问题,专业团队专业处理 751

RK3568平台(网络篇)添加网络交换芯片RTL8306M

该交换芯片支持I2C、SPI、mdio通信,但是看ast1520的uboot代码采用的是mdio去通信phy芯片的,所以暂时也先采用mdio的方式,需要配置相应的引脚才可以配置成mdio通信模式,具体的配置硬件工程师解决。RTL8306M芯片上可能没有提供MDC/MDIO接口,可以通过GPIO(General Purpose Input/Output)来模拟,GPIO可实现串行输入输出,且一般CPU上会提供很多GPIO接口供用户自定义使用。

weixin_49303682的博客 3934

poj 2186 Popular Cows (强连通分量 tarjan)

poj 2186 Popular Cows 强连通分量 tarjan http://poj.org/problem?id=2186   #include #include "stdio.h" #include "string.h" using namespace

411

【STK】手把手教你利用STK进行弹道导弹和运载火箭发射仿真的相关方法全过程解析

写这个系列主要是这几年做了一些弹道导弹和运载火箭发射的相关仿真项目,stk软件由于其专业性在国内比较小众,相关的教程和书籍、经验贴都不是很多,因此新手在进行开发中容易遇到较多困难,把自己的一些经验体会写下来,一方面供自己总结回顾,另一方面也希望对大家有所帮助。这个系列计划分几篇文章写完,每章的内容结构相似,都分为①如何确定发射场位置和发射轨迹、②导入导弹和运载火箭模型、③设计模型分段动作、④飞行参数分析和相关应用这四个部分,每篇文章争取完整描述1-2个实际项目的操作过程。

weixin_44184852的博客 5985

poj 2186 Popular Cows 【强连通分量Tarjan算法 + 树问题】

题目地址:http://poj.org/problem?id=2186 Popular Cows Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 27496 Accepted: 11059 Description Every cow's dream is to b...

weixin_30343157的博客 106

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

POJ 2186 Popular Cows强连通分量分解

题目链接http://poj.org/problem?id=2186  假设两头牛A和B都被其他牛认为是红人,则A认为B是,B认为A是,及存在一个包含A和B的圈,或者A和B属于同一个强连通分量。反之,如果一个牛被其他所有牛认为是红人,那么其所在的强连通分量的所有牛都被其他所有牛认为是红人,显然这样的强连通分量最多只有一个,否则强连通分量还能继续扩大,不满足强连通分量的定义。我们把图进行强连通分量

相思作坊半世离殇的博客 434

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

强连通分量(POJ 2186 Popular Cows)

<br />/* <br />  * File:   PKU 2186 Popular Cows<br />  * Author: xiaotian @ hnu<br />  * Created on 2010年10月6日, 上午9:50<br />  * 题解:求强连通分量、缩点。<br />  * 检查出度为0的“点”的个数,这里的点指的是每一个强连通分量<br />  * 当出度为 0 “点”的个数仅为 1 时输出该联通分量里的点的个数<br />  * 否则输出 0 。<br />

337

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

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

poj 2186 Popular Cows 【强连通分量】

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

leibniz_zhang的博客 349

POJ 2186 Popular Cows【强连通分量分解】

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

wyjwyl的专栏 462

poj 2186 Popular Cows(强连通分量)

题目:http://poj.org/problem?id=2186 Popular Cows Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 27673   Accepted: 11139 Description Every cow's dream is

theArcticOcean 541

poj 2186 Popular Cows 强连通分量分解

题目:http://poj.org/problem?id=2186 题意:有N(N给出N,M和M个欢迎关系,求被所有牛都欢迎的牛的数量。 思路:用强连通分量分解,分解后判断图是不是连通图,不是连通图,答案为0,若是连通图,定有一个强连通分量内所有的点是满足要求的。关于连通图的判断,用tarjan算法时,统计出度0的强连通分量个数,为1时有解,即出度为0的强连通分量,大于1无解。用kosaraj

弱智就要多努力 632

POJ 2186 Popular Cows 强连通分量

链接:http://poj.org/problem?id=2186 题意:给出若干对大牛A仰慕大牛B,并且仰慕可以传递,问有多少个大牛被除本身之外的所有大牛仰慕。 思路:先tarjan缩点,找出每个强连通分量出度和入度,如果有强连通分量出度入度都为零或者有超过一个强连通分量的出度为零,就没有大牛满足条件,否则答案就是出度为零的强连通分量的结点数。 代码: #include #incl

看曙光 948

POJ 2186 Popular Cows (强连通分量)

DescriptionEvery 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) ordered pairs of the form (A, B) that tell y

henuzxy 366

POJ-2186 Popular Cows (强连通分量[Kosaraju])

初次接触这方面的图论,知道的太少了,还不能看出如何转换,只能根据题解慢慢学习 要做这题首先得了解一个定理:DAG中唯一出度为0的点,一定可以由任何点出发均可达(由于无环,所以从任何点出发往前走,必然终止于一个出度为0的点) 可以先求出所有的强连通分量,并且将强连通分量缩成一个点,寻找出度为0的缩点,若其个数大于1,则有0个点满足题意;若其个数等于1,则缩点中所有的点都满足题意

idealism_xxm的专栏 529

poj 2186 Popular Cows Kosaraju求强连通分量

题意:有一群牛,每对牛之间可以有崇拜关系,同时,崇拜关系满足传递性。问被除自己以外的所有牛崇拜的牛有多少头? 第一次做强连通分量的题。这道题想想其实很简单。 思路:先按题意建图,显然,每个强联通分量中的牛都是相互崇拜的,所以我们把所有强连通分量找出来,然后把它们都看成一个点。两个强连通分量之间如果存在边,则必存在边(V1,V2)∈E,其中V1∈强连通分量1, V2∈强连通分量2。点有了

Pekary 519
上一篇: POJ 3352 & 3177 无向图的边-双连通分量(无重边 & 重边)
下一篇: POJ 1236 Network of Schools(强连通分量)
SIO__Five
博客等级 码龄14年 29粉丝 225原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值