题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1051

由题意可知,被所有牛仰慕的牛之间也互相仰慕,则最后的答案一定是唯一的强连通分量,如图:

且这个强连通分量出度为0。

所以用tarjan缩环,然后在判断出度为0的是否有且仅有一个点。

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = ;
struct node {
int e, next;
}edge[];
int head[maxn * ], len;
void add(int s, int e) {
edge[++len].e = e;
edge[len].next = head[s];
head[s] = len;
}
int color[maxn], dfn[maxn], low[maxn], vis[maxn];
int out[maxn];
int num[maxn];
int dfsnum, ansnum, top;
stack<int>q;
void tarjan(int x) {
dfn[x] = low[x] = ++dfsnum;
vis[x] = ;
q.push(x);
for (int i = head[x]; i; i = edge[i].next) {
int y = edge[i].e;
if (!dfn[y]) {
tarjan(y);
low[x] = min(low[x], low[y]);
}
else if (vis[y])
low[x] = min(low[x], dfn[y]);
}
if (low[x] == dfn[x]) {
ansnum++;
int y;
do {
y = q.top();
q.pop();
color[y] = ansnum;
num[ansnum]++;
vis[y] = ;
} while (x != y);
}
}
int main() {
int n, m, x, y;
scanf("%d%d", &n, &m);
for (int i = ; i <= m; i++) {
scanf("%d%d", &x, &y);
add(x, y);
}
for (int i = ; i <= n; i++)
if (!dfn[i])
tarjan(i);
for (int x = ; x <= n; x++) {
for (int i = head[x]; i; i = edge[i].next) {
int y = edge[i].e;
if (color[x] != color[y])
out[color[x]]++;
}
}
int ans = , f = ;
for (int i = ; i <= ansnum; i++)
if (out[i] == )ans = num[i], f++;
if (f == )
printf("%d\n", ans);
else
printf("0\n");
}

最新文章

  1. 按需加载.js .css文件
  2. 1002. A+B for Polynomials
  3. unity中全屏背景图缩放
  4. get/close not same thread Druid 连接池一个设置
  5. PHP抓取网络数据的6种常见方法
  6. cojs EX_香蕉 题解报告
  7. 揭秘淘宝自主研发的文件系统:TFS
  8. Bootstrap 按钮分组
  9. Python中__new__和__init__区别
  10. Java相关面试题总结+答案(三)
  11. 代码编辑器横评:为什么 VS Code 能拔得头筹
  12. pcntl_exec()
  13. java里的基本数据类型和引用数据类型
  14. PHPMailer出现SMTP connect() failed.
  15. 【Selenium-WebDriver自学】Log4J的设置(十五)
  16. 07_python_集合深浅拷贝
  17. PAT B1030 完美数列 (25 分)
  18. Java并发(二)-实现同步
  19. Ubuntu下 git 服务器的搭建【转】
  20. 同一页面的两个Iframe,其中一个iframe获取另一个iframe内的iframe中的元素值

热门文章

  1. vue-fiters过滤器的使用
  2. 《图解HTTP》阅读总结
  3. tf.clip_by_global_norm
  4. 三、Windows下用FFmpeg+nginx+rtmp搭建直播环境 实现推流、拉流
  5. ES基本原理
  6. [Tyvj2032]升降梯上(最短路)
  7. RABBITMQ 协议 AMQP协议
  8. scapy - 基于python的数据包操作库
  9. BZOJ 5046 分糖果游戏
  10. laravel后台账户登录验证(5.5.48版本)