YBT高效进阶3.4.2 洛谷P2341 POJ2186受欢迎的牛Popular Cows

Title

Time Limit: 2000MS
Memory Limit: 65536K

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 form (A, B) that tell you that cow A thinks that cow B is popular. Since popularity is transitive, if A thinks B is popular and B thinks C is popular, then A will also think that C is
popular, even if this is not explicitly specified by an ordered pair in the input. Your task is to compute the number of cows that are considered popular by every other cow.

Input

  • Line 1: Two space-separated integers, N and M
  • Lines 2…1+M: Two space-separated numbers A and B, meaning that A thinks B is popular.

Output

  • Line 1: A single integer that is the number of cows who are considered popular by every other cow.

Sample Input

3 3
1 2
2 1
2 3

Sample Output

1

Hint

Cow 3 is the only cow of high popularity.

翻译

受欢迎的牛

时限: 2000MS
内存限制: 65536K

描述

每个奶牛的梦想都是成为牛群中最受欢迎的奶牛。在N(1 <= N <= 10,000)头牛群中,您最多可获得M(1 <= M <= 50,000)串有序对(A,B),告诉您母牛A认为母牛B很受欢迎。由于流行是传递性的,因此如果A认为B流行并且B认为C流行,那么A也将认为C
流行,即使未在输入中由有序对明确指定它也是如此。您的任务是计算被其他所有奶牛所欢迎的奶牛数量。

输入

*第1行:两个以空格分隔的整数N和M
*第2…1 + M行:两个以空格分隔的数字A和B,表示A认为B很流行。

输出

*第1行:一个整数,表示被其他所有奶牛所欢迎的奶牛数量。

样本输入

3 3
1 2
2 1
2 3

样本输出

1

暗示

母牛3是唯一具有很高知名度的母牛。

思路

缩点,如果出度为0的点唯一,ans=该点原始点数
若出度为0的点有多个,ans=0
缩点用Floyd or Tanjan or Topsort or Kosaraju

CODE

#include<iostream>
#include<cstdio>
#include<stack>
using namespace std;
int dfn[50010],low[50010],col[50010],s[50010],v[50010],outs[50010],u[50010],e[50010],nxt[50010],head[50010],tot,len,u2[50010],e2[50010],nxt2[50010],head2[50010],cnt;
stack<int>stck;
void Tanjan(int x)
{dfn[x]=low[x]=++tot;stck.push(x);for(int i=head[x];i;i=nxt[i])if(!dfn[e[i]])Tanjan(e[i]),low[x]=min(low[x],low[e[i]]);else if(!col[e[i]])low[x]=min(low[x],dfn[e[i]]);if(dfn[x]==low[x]){for(col[x]=++len,s[len]=1;stck.top()!=x;stck.top(),stck.pop())col[stck.top()]=len,s[len]++;stck.pop();}return;
}
int main()
{ios::sync_with_stdio(false);int n,m,i,ans;for(cin>>n>>m,i=1;i<=m;i++)cin>>u[i]>>e[i],nxt[i]=head[u[i]],head[u[i]]=i;for(i=1;i<=n;i++)if(!dfn[i])Tanjan(i);for(i=1;i<=m;i++)if(col[u[i]]!=col[e[i]])u2[++cnt]=col[u[i]],e2[cnt]=col[v[i]],nxt2[cnt]=head2[col[u[i]]],head2[col[u[i]]]=cnt,outs[col[u[i]]]=1;for(ans=0,i=1;i<=len;i++)if(!outs[i]){if(ans){cout<<0;return 0;}ans=s[i];}cout<<ans;return 0;
}

YBT高效进阶3.4.2 洛谷P2341 POJ2186受欢迎的牛Popular Cows相关推荐

  1. 洛谷——P2341 [HAOI2006]受欢迎的牛//POJ2186:Popular Cows

    P2341 [HAOI2006]受欢迎的牛/POJ2186:Popular Cows 题目背景 本题测试数据已修复. 题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所 ...

  2. 洛谷P2341 [HAOI2006]受欢迎的牛 (Tarjan,SCC缩点)

    P2341 [HAOI2006]受欢迎的牛|[模板]强连通分量 https://www.luogu.org/problem/P2341 题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就 ...

  3. 洛谷 P2341 [HAOI2006]受欢迎的牛

    题目 题目背景 本题测试数据已修复. 题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所有奶 牛都是自恋狂,每头奶牛总是喜欢自己的.奶牛之间的"喜欢" ...

  4. 洛谷P2341(受欢迎的牛)题解

    题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所有奶 牛都是自恋狂,每头奶牛总是喜欢自己的.奶牛之间的"喜欢"是可以传递的--如果A喜 欢B,B喜 ...

  5. 【ybt高效进阶4-4-3】【luogu P4513】公园遛狗 / 小白逛公园

    公园遛狗 / 小白逛公园 题目链接:ybt高效进阶4-4-3 / luogu P4513 题目大意 给你一个序列,要维护两个操作. 单点修改和在一个区间中找权值最大的子区间的权值. 思路 其实这个是很 ...

  6. 【ybt高效进阶1-5-2】【luogu P3456】山峰和山谷 / GRZ-Ridges and Valleys

    山峰和山谷 / GRZ-Ridges and Valleys 题目链接:ybt高效进阶1-5-2 / luogu P3456 题目大意 对于山谷和山峰,我们这样定义: 它们是一个连通块(其中的高度都相 ...

  7. 【YBT高效进阶】1基础算法/4深度优先搜索/2数独游戏

    [YBT高效进阶]1基础算法/4深度优先搜索/2数独游戏 内存限制:256 MiB 时间限制:1000 ms 标准输入输出 题目类型:传统 评测方式:文本比较 题目描述 数独是一种传统益智游戏,你需要 ...

  8. 【ybt高效进阶5-6-3】耗费体力(单调队列优化DP)

    耗费体力 题目链接:ybt高效进阶5-6-3 题目大意 有一行树,树有高度,要从最左边跳到最右边,如果从高的树跳向低的就不需要花费体力,否则就要花费一点体力. 然后每次给你跳一次最远能跳的距离,问你最 ...

  9. YBT高效进阶 6.2.5 余数之和

    YBT高效进阶 6.2.5 余数之和 思路 (n,k)(n,k)(n,k) =∑i=1nkmodi=\sum_{i=1}^nk\bmod i=∑i=1n​kmodi =∑i=1nk−⌊ki⌋=\sum ...

  10. 【YBT高效进阶】1基础算法/1逆推算法/2奇怪汉诺塔

    [YBT高效进阶]1基础算法/1逆推算法/2奇怪汉诺塔 内存限制:256 MiB 时间限制:1000 ms 标准输入输出 题目类型:传统 评测方式:文本比较 题目描述 汉诺塔问题,条件如下: 这里有 ...

最新文章

  1. .net调试插件sosex的mk命令显示调用堆栈
  2. Centos下安装apahce的configure: error: APR not found. Please read the documentation解决办法
  3. margin 0 auto 什么意思
  4. 基于numpy的多项式拟合预测人口数值
  5. testng.xml文件配置
  6. android zip文件读写,如何直接从.zip文件中读取文件而不在android中提取它
  7. python3爬虫-1
  8. 获取地址栏的最后一个文件
  9. QQ空间 自动点赞脚本
  10. 技术文摘11 fang money 技术 资料
  11. 关于企业邮箱服务器经常被spamhaus反垃圾邮件组织拦截的排错方法分享
  12. Programming Challenges 习题 1.6.7
  13. python热搜排行功能_用Python做一个微博热搜榜的语音播报
  14. 使用OneR算法进行分类(Python实现)
  15. 2022年湖南省自考考试幼儿园教育活动设计与组织练习题及答案
  16. java管理系统中期报告_基于Java的图书馆管理系统的设计-中期报告
  17. 在线配色网,方便实用!
  18. rsa public key not find
  19. 无法往开启kerberos的zookeeper上注册服务_英雄联盟手游拳头账号有几个区?lol手游韩国账号怎么注册?...
  20. Java基础篇面试题49问与答 (2021最新版)

热门文章

  1. 在MacOS系统下DMG文件显示压缩包无法双击安装解决办法
  2. 一劳永逸:服务器专用的软件防火墙
  3. 最新资料!工银亚洲开户见证业务受理网点(深圳地区)
  4. Trie Tree和Radix Tree
  5. Moneybookers API支付方式开发 步骤
  6. excel制作特殊图表记录
  7. Evolutionary Clustering of Streaming Trajectories
  8. QuatusII--7段数码管
  9. 爬虫初学——爬取京东商品的评论(二)
  10. ketchup 消息队列rabbitmq使用