#include <map>
#include <set>
#include <cmath>
#include <queue>
#include <stack>
#include <cstdio>
#include <string>
#include <vector>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
const int MAXE = 22220, MAXV = 11110;
struct Arc
{
int dest;
Arc *next;
inline Arc() {}
inline Arc(const int &_dest, Arc *_next):dest(_dest), next(_next) {}
}Npool[MAXE], *Nptr = Npool, *adj[MAXV];
vector<int> com[MAXV];//存强连通分量的容器
int n, m, dfn[MAXV], low[MAXV], belong[MAXV], index, cnt;
//n顶点数,m边数,index为时间戳,cnt为强连通分量个数
//dfn用来保存时间戳(次序)编号,low保存顶点i或i的子树最早的次序编号
//belong用来缩点的数组,值相等的对应下标在同一个强连通分量内
bool instack[MAXV];
stack<int> s;
inline void addEdge(const int &start, const int &finish)
{
adj[start] = new(Nptr++)Arc(finish, adj[start]);
}
inline void tarjan(const int &i)
{
dfn[i] = low[i] = ++index;
instack[i] = true;
s.push(i);
for (Arc *p = adj[i]; p; p = p->next)
{
if (!dfn[p->dest])
{
tarjan(p->dest);
if (low[i] > low[p->dest])
low[i] = low[p->dest];
}
else if (instack[p->dest])
if (low[i] > dfn[p->dest])
low[i] = dfn[p->dest];
}
if (dfn[i] == low[i])
{
//com[++cnt].clear();
cnt++;//
int j;
do//缩点
{
j = s.top();
s.pop();
instack[j] = false;
com[cnt].push_back(j);
belong[j] = cnt;
}while (j != i);
}
}
int main()
{
scanf("%d", &n);
memset(adj, 0, sizeof(adj));
memset(instack, false, sizeof(instack));
memset(dfn, 0, sizeof(dfn));
index = 0, Nptr = Npool, cnt = 0;
for (int i = 0; i <= n; i++)
com[i].clear();
while (!s.empty())
s.pop();
for (int i = 1; i <= n; i++)
{
int s, t;
while(scanf("%d", &s),s)
addEdge(i, s);
}
for (int i = 1; i <= n; i++)
if (!dfn[i])
tarjan(i);
bool in[MAXV]={0},out[MAXV]={0};////
int In=0,Out=0;
for(int i=1;i<=n;i++){
for (Arc *p = adj[i]; p; p = p->next)
if(belong[i]!=belong[p->dest]){
in[belong[p->dest]]=true;//不合要求,要的只是出入度为零的,其余不管
out[belong[i]]=true;
}
}
for(int i=1;i<=cnt;i++){
if(!in[i])In++;
if(!out[i])Out++;
}
cout<<In<<endl<<((cnt==1)?0:max(In,Out))<<endl;//为何min
return 0;
}
相关推荐
CircuitBreaker Resilience4J 介绍
在分布式环境中,我们的应用可能会面临着各种各样的可恢复的异常(比如超时,网络环境异常),此时我们可以利用不断重试的方式来从异常中恢复(Retry Pattern),使整个集群正常运行。然而,也有一些异常比较顽固,突然发生,无法预测,而且很难恢复,并且还会导致级联失败(举个例子,假设一个服务集群的负载非常高,如果这时候集群的一部分挂掉了,还占了很大一部分资源,整个集群都有可能遭殃)。如果我们这时还是不断进行重试的话,结果大多都是失败的。
poj2186 Popular cows
Popular cows 题目背景: poj2186 分析:题目本身简单,从每头牛向他们所喜欢的牛连边,考虑这么一个问题,所有的满足题目受欢迎的条件,则这些牛都在同一个强连通分量中,并且,这个SCC一定是出度为0的,所以我们要求的就是那个SCC中的点的个数即可,但是注意,可能出现获得的图并不联通的情况,这个时候答案直接为NO,因为不可能有符合题目的牛。 Source: {优快云:CO
告别CANoe?手把手教你用Python+PCAN搭建汽车诊断脚本(附完整代码)
本文详细介绍了如何利用Python和PCAN硬件搭建高性价比的汽车诊断自动化方案,替代昂贵的CANoe工具。通过开源库python-can和udsoncan实现UDS诊断协议,涵盖硬件选择、环境配置、核心功能实现及性能优化,附完整代码示例,助力开发者快速构建诊断脚本。
【强连通】POJ 2186 Popular cows
POJ 2186 Popular cows 【传送门】 Time Limit:2000MS Memory Limit:65536K Total Submissions:43139 Accepted:17547 Description Every cow's dream is to become the most popular cow in th...
一文吃透 BMS:动力电池与储能共用的电池管控全架构详解
BMS作为电池系统的核心控制器,其技术深度和系统复杂性不容小觑。动力电池与储能系统虽然应用场景不同,但在核心架构上共享大量基础技术。成功的BMS设计需要在精度、可靠性、成本、功耗之间找到最佳平衡点。未来,随着电池技术的进步和智能化需求的提升,BMS将向着更高集成度、更强智能化、更优经济性的方向发展。无论是汽车工程师还是储能系统设计师,深入理解BMS的全栈架构,掌握其核心技术原理,都将是应对未来能源存储挑战的关键能力。核心要点回顾BMS采用分层分布式架构,硬件是基础,算法是灵魂。
RLC电阻电容电感基础知识——电感篇
电感 等效电路 电感线圈由铜导线绕制,等效电路如图所示。 寄生电阻RS,包括了绕线电阻、引脚串联电阻以及磁芯损耗电阻三部分组成,其中绕线电阻与线径、长度、铜线电阻率有关;引脚电阻与引线长短、粗细有关;磁芯损耗电阻与磁芯材料特性有关,显然磁芯损耗电阻还与工作频率有关.寄生电容C主要是绕线圈与圈之间的杂散电容(为PF级),与绕线工艺有关。 等效导纳 显然: (1)当角频率ω(频率f)较小时,呈电感性. (2)当角频率ω等于ω0时,导纳Y虚部为0,呈现电阻性,即发生共振。令导纳Y虚部为0,即可求出共振角频率ω
POJ 2186 Popular Cows Kosaraju求强联通分量
POJ 2186 Popular Cows 强联通分量 题目链接: POJ 2186 Popular Cows 题意:给定N个顶点M条边的有向图。边具有传递性。如A到B连通,B到C连通,那么A到C也是连通的。求有多少个顶点满足其他所有顶点到该顶点都连通。 思路:先求出强联通分量,缩点,强连通分量内所有的点都是相互连通的,然后所有的缩点构成一个DAG(有向无环图),如果图中要存在顶点满足
从‘最速控制’到代码:深入拆解韩京清ADRC中TD跟踪器的fhan函数(含Matlab/Simulink实例)
本文深入解析韩京清ADRC中的fhan函数,从理论到代码实现,详细拆解其在Matlab/Simulink中的应用。通过分析最速控制问题和非线性TD的连续形式,揭示fhan函数在信号处理和噪声抑制中的独特优势,并提供工程实践中的参数整定和优化技巧。
POJ 2186 Popular Cows
POJ 2186 Popular Cows题意:有n头牛,m个关系,每个关系A,B表示A牛认为B牛很受欢迎。若A牛认为B牛很受欢迎,B牛认为C牛很受欢迎,则A牛也认为C牛很受欢迎。让你输出有几头牛被所有其他的牛认为很受欢迎。思路:先找出所有的强连通分量,若出度为0的点只有一个,求这个点里包含的所有点的个数。若出度为0的点不止一个,则没有最受欢迎的牛,输出0。题解:#include<iostream>
Android开发实战:5分钟搞定全屏沉浸式状态栏(附完整代码示例)
本文提供了Android开发中实现全屏沉浸式状态栏的完整实战指南。通过对比主题配置、动态代码设置和Window标志位三种方法,详细讲解了如何隐藏状态栏并处理布局适配。文章还涵盖了刘海屏、手势导航等高级适配场景,并附有可直接使用的工具类代码,帮助开发者快速提升应用视觉体验。
华为od机试|华为od机试真题2025|华为od题库|华为od机考|2025C卷B卷
华为od机试|华为od机试真题2025|华为od题库|华为od机考|华为od机试|华为od机试真题2025|华为od题库|华为od机考|华为od机试|华为od机试真题2025|华为od题库|华为od机考|华为od机试|华为od机试真题2025|华为od题库|华为od机考|B卷C卷
POJ 2186 Popular Cows(强联通分量)
题意: 给出n头牛,m个关系,关系x,y表示牛x喜欢牛y,如果x喜欢y,y喜欢z,那么x也喜欢z。 是否存在一些牛,其他所有牛都喜欢他。 明显,如果是一个大的联通分量,那么他们相互喜欢,如果有几个联通分量,那么如果有两个或两个以上的联通分量没有指向其他联通分量,那么这样的牛是不存在的,如图: 所以我们出了计算联通分量,还要存放,某个联通分量有多少个牛组成,以及这个联通分量有没有出度,如果这样的牛存在,那么它所在的联通分量必然出度为0,并且只有1个出度为0的联通分量。 //POJ_2186_Popul..
【反卷积算法】Richardson-Lucy (RL) :通过不断迭代更新图像估计值
Richardson-Lucy(RL)反卷积算法:是一种基于最大似然估计(Maximum Likelihood Estimation, MLE)的图像去卷积方法,常用于去模糊和图像增强。通过不断地更新图像估计值,来最小化模糊图像和恢复图像之间的误差,逐步消除模糊,最终接近真实的原始图像,每次迭代都会根据当前估计的图像来修正下次迭代的结果。
POJ 2186 Popular Cows (强连通分量)
POJ 2186 Popular Cows 链接:http://poj.org/problem?id=2186 题意:每头奶牛都梦想着成为牧群中最受奶牛仰慕的奶牛。在牧群中,有N 头奶牛,1≤N≤10,000,给定M 对(1≤M≤50,000)有序对(A, B),表示A 仰慕B。由于仰慕关系具有传递性,也就是说,如果A 仰慕B,B 仰慕C,则A 也仰慕C,即使在给定的M 对关系中并没
怀旧版电脑GBC模拟器
再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。
Camera2Demo
在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作
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
jdk-8u144-linux-x64.tar.gz.
该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包
POJ 2186 —— Popular Cows
原题:http://poj.org/problem?id=2186 题意:问有多少个点满足条件 —— 其他所有的点都可以到达它; 思路:先求强连通分量,然后反向构建DAG图,新图中的点权就是每个强连通分量所包含的点的个数(因为强连通分量中任意两点均可达);如果新图中入度 = 0 的点超过一个就输出 0 ,否则就输出该点的点权; Q:为什么要反向建图? A:反向建图就将问题转化成了从该
大中型超市收银系统(可直接运行)
光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开
poj2186 Popular Cows
Popular Cows Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 31782 Accepted: 12909 Description Every cow's dream is to become the most popular cow in the
POJ 2186 Popular Cows Tarjan+缩点
POJ 2186 Popular Cows Tarjan+缩点 题意:给定一个有向图,求有多少个顶点是任意顶点出发都可达的。 定理:有向无环图中唯一出度为0的点,一定可以由任何点出发均可达(由于无环所以从任何点出发往前走,必然终止于一个出度为0的点。) 思路: 1.求出所有的强连通分量(用tarjan()算法) 2.每个强连通分量缩成一点,则形成一个有向无环图DAG。 3.DAG...
POJ 2186 Popular Cows(强连通)
POJ 2186 Popular Cows 题目链接 题意:一个奶牛,之间有互相仰慕的关系,如果A仰慕B,B仰慕C,意味着A也仰慕C,问有多少奶牛被所有奶牛仰慕 思路:强连通缩点,点权为连通集合个数,如果出度为0的点个数大于1个,答案就是0,如果等于1个,答案就是那个点的权值 代码: #include #include #include #include #i
POJ 2186 Popular Cows 强连通图
滴,集训第二十七天打卡。 近日居然没有新的题目训练了呢... 有点无趣,只能翻之前的题目补补了.. POJ 2186 Popular Cows 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...
[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)看成...
tarjan算法 求解强联通分量 POJ_2186_Popular Cows
算法介绍 如果两个顶点可以相互通达,则称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。非强连通图有向图的极大强连通子图,称为强连通分量(strongly connected components)。 下图中,子图{1,2,3,4}为一个强连通分量,因为顶点1,2,3,4两两可达。{5},{6}也分别是两个强
POJ 2186 POPULAR COWS
Link:http://poj.org/problem?id=2186 注意题中 是considered popular by every other cow 意思是除了他自己其他牛都喜欢他的 我一开始理解为 the most popular =-= 利用tarjan算出强连通分支 缩点 得出出度为0的个数num(num一定不会等于0的) 如果num为1 则为该强连通图的牛...
poj 2186 Popular Cows
Popular Cows Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 29908 Accepted: 12131 Description Every cow's dream is to become the most popular cow in the her
POJ2186 Popular Cows
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) ordered pairs of the ...
3539



被折叠的 条评论
为什么被折叠?



