【BZOJ1051】[HAOI2006]受欢迎的牛
【BZOJ1051】[HAOI2006]受欢迎的牛
题面
题解
假如\(A\)喜欢\(B\)就连一条\(A\)到\(B\)的边
然后缩点,如果图不连通就\(Impossible\)
否则输出出度为\(0\)的环的大小
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
inline int gi(){
register int data=0, w = 1;
register char ch=0;
while (ch != '-' && (ch > '9' || ch < '0')) ch = getchar();
if (ch == '-') w = -1 , ch = getchar();
while (ch >= '0' && ch <= '9') data = (data << 1) + (data << 3) + (ch ^ 48), ch = getchar();
return w * data;
}
#define MAX_N 10005
#define MAX_M 50005
struct Edge {
int to, next;
} e[MAX_M];
int h[MAX_N], cnt;
int n, m;
void Add_Edge(int u, int v) {
e[cnt].to = v, e[cnt].next = h[u], h[u] = cnt++;
}
int tim = 0, num = 0, top = 0;
int low[MAX_N], dfn[MAX_N], color[MAX_N], st[MAX_N];
int tot[MAX_N];
void tarjan(int x) {
low[x] = dfn[x] = ++tim;
st[++top] = x;
for (register int i = h[x]; ~i; i = e[i].next) {
if (!dfn[e[i].to]) {
tarjan(e[i].to);
low[x] = min(low[x], low[e[i].to]);
} else if (!color[e[i].to])
low[x] = min(low[x], dfn[e[i].to]);
}
if (low[x] == dfn[x]) {
color[x] = ++num;
tot[num]++;
while (st[top] != x) {
color[st[top]] = num;
tot[num]++;
--top;
}
--top;
}
}
int d[MAX_N];
int main () {
memset(h, -1, sizeof(h));
n = gi(), m = gi();
for (register int i = 1; i <= m; i++) {
int u = gi(), v = gi();
Add_Edge(u, v);
}
for (register int i = 1; i <= n; i++)
if (!dfn[i]) tarjan(i);
int ans = 0, F = 0;
for (register int x = 1; x <= n; x++)
for (int i = h[x]; ~i; i = e[i].next)
if (color[x] != color[e[i].to]) d[color[x]]++;
for (register int i = 1; i <= num; i++) {
if (d[i] == 0) F++, ans = tot[i];
}
if (F == 1) printf("%d\n", ans);
else printf("0\n");
return 0;
}
【BZOJ1051】[HAOI2006]受欢迎的牛的更多相关文章
- bzoj1051 [HAOI2006]受欢迎的牛
1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4773 Solved: 2541[Submit][Sta ...
- bzoj1051: [HAOI2006]受欢迎的牛(tarjan板子)
1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 6064 Solved: 3179[Submit][Sta ...
- [BZOJ1051][HAOI2006] 受欢迎的牛 tarjan求联通分量
1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 5687 Solved: 3016[Submit][Sta ...
- [Bzoj1051][HAOI2006]受欢迎的牛(缩环)
1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 6676 Solved: 3502[Submit][Sta ...
- bzoj1051: [HAOI2006]受欢迎的牛(强联通)
1051: [HAOI2006]受欢迎的牛 题目:传送门 题解: 今天又做一道水题... 强联通啊很明显 水个模板之后统计一下每个强联通分量中点的个数,再统计一下出度... 不难发现:缩点之后当且仅当 ...
- [bzoj1051] [HAOI2006]受欢迎的牛 (Tarjan+缩点)
强连通图,缩点 Description 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎. 这 种关系是具有传递性的,如果A认为B受欢迎,B认为C受 ...
- [BZOJ1051] [HAOI2006] 受欢迎的牛 (强联通分量)
Description 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎. 这 种关系是具有传递性的,如果A认为B受欢迎,B认为C受欢迎,那么牛A也 ...
- 【强连通分量】Bzoj1051 HAOI2006 受欢迎的牛
Description 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎. 这种关系是具有传递性的,如果A认为B受欢迎,B认为C受欢迎,那么牛A也认 ...
- BZOJ1051 [HAOI2006]受欢迎的牛 Tarjan 强连通缩点
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1051 题意概括 有n只牛,有m个羡慕关系. 羡慕关系具有传递性. 如果A羡慕B,B羡慕C,那么我们 ...
- bzoj1051 [HAOI2006]受欢迎的牛 tarjan&&缩点
题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所有奶 牛都是自恋狂,每头奶牛总是喜欢自己的.奶牛之间的“喜欢”是可以传递的——如果A喜 欢B,B喜欢C,那么A也喜欢C ...
随机推荐
- Redis 处理客户端连接的一些内部实现机制
本文主要介绍了 Redis 处理客户端连接的一些内部实现机制,包括连接处理.超时.缓冲区等一系列内容. 注:本文所述内容基于 Redis2.6 及以上版本. 连接的建立 Redis 通过监听一个 TC ...
- Jquery组织Form表单提交之Form submission canceled because the form is not connected
有时候导出Excel时需要根据某些条件筛选数据,然后将数据通过NPOI生成Excel并导出.组织数据时可以通过放到一个表单中,某些场景是使用脚本(如:jquery)组织一个form(通过字符串拼接), ...
- JS获取长度方法总结
目录: 1length 2size() 3length与size()的区别 4获取元素的索引 - index() 5获取对应的索引 - eq() 概述: 在工作中大家经常需要获取对象的长度,或者要获取 ...
- 使用AKLocationManager定位
使用AKLocationManager定位 https://github.com/ideaismobile/AKLocationManager 以下是使用情况: 是不是很简单呢,我们可以将它的步骤进一 ...
- SQL语言DDL DML DCL TCL四种语言
1.DDL(Data Definition Language)数据库定义语言:DDL使我们有能力创建或删 除表格.可以定义索引(键),规定表之间的链接,以及施加表间的 约束. • 常见DDL 语句: ...
- windows安装及配置mysql5.7
引子 mysql官方网站上没有 windows mysql5.7 64位版本msi的安装包下载,我们可以通过zip版本解压缩后手动安装配置环境. msi安装的话有32位的,基本上就是看着图形界面来一步 ...
- (1)I/O流 (2)线程
1.I/O流1.1 ObjectOutputStream类(重点)(1)基本概念 java.io.ObjectOutputStream类主要用于将Java对象整体写入到输出流中. 只能将支持 java ...
- Linux常用命令笔记总结(待补充)
问题实际场景:遇到告警磁盘利用率不足,检查根目录下各文件大小 Linux查看磁盘利用率 df –h 查找磁盘占用情况 find / -size +100M 从根目录往下找大于100M大小的文件 du ...
- QT导入libcurl支持HTTPS
对于我这种不会编译的人来说,必须找到已经编译好的DLL文件,以及头文件才能使用. 幸运的在这个网站https://stackoverflow.com/questions/28137379/libcur ...
- Phthon3.4 新特性
1. print的变化:. 在python3.0中,print成为了一个函数,将传入的参数一输出. Python3.0: Python 2.5: 2.使用比较操作符时,如果被比较的对象没有 ...