[bzoj1051] [HAOI2006]受欢迎的牛 (Tarjan+缩点)
强连通图,缩点
Description
每一头牛的愿望就是变成一头最受欢迎的牛。现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎。 这
种关系是具有传递性的,如果A认为B受欢迎,B认为C受欢迎,那么牛A也认为牛C受欢迎。你的任务是求出有多少头
牛被所有的牛认为是受欢迎的。
Input
第一行两个数N,M。 接下来M行,每行两个数A,B,意思是A认为B是受欢迎的(给出的信息有可能重复,即有可
能出现多个A,B)
Output
一个数,即有多少头牛被所有的牛认为是受欢迎的。
Sample Input
3 3
1 2
2 1
2 3
Sample Output
1
HINT
100%的数据N<=10000,M<=50000
题目大意:自己读题(雾。
解法:这题其实很简单,求出强连通分量,然后缩点,统计每个分量的出度。如果只有一个出度为零的点,则输出该分量点的个数,否则输出0.
没写cstdio DEV居然没报错,交上去连续CE两发。。。mdzz
#include <iostream>
#include <stack>
#include <cstdio>
using namespace std;
const int maxn = 10000 + 5;
const int maxm = 50000 + 5;
int n,m;
int cnt;
int out[maxn];
int dfn[maxn], low[maxn],belong[maxn];
int son[maxn];
stack <int> s;
struct edge {
int v;
edge *next;
}e[maxm], *head[maxn];
void dfs(int u){
dfn[u] = low[u] = ++cnt;
s.push(u);
for(edge *k = head[u];k;k = k->next){
if(!dfn[k->v])dfs(k->v);
low[u] = min(low[u],low[k->v]);
}
int v;
if(dfn[u] == low[u]){
do {
v = s.top();s.pop();
belong[v] = u;
son[u]++;
}while(v != u);
}
}
void rebuild(){
for(int i = 1;i <= n;i++)out[i] = -1;
for(int i = 1;i <= n;i++)out[belong[i]] = 0;
for(int i = 1;i <= n;i++){
for(edge *k = head[i];k;k = k->next){
if(belong[i] != belong[k->v])out[belong[i]]++;
}
}
}
int main(){
scanf("%d%d",&n,&m);
for(int i = 0;i < m;i++){
int u,v;scanf("%d%d",&u,&v);
e[cnt] = (edge) {v,head[u]};head[u] = &e[cnt++];
}
cnt = 0;
for(int i = 1;i <= n;i++)if(!dfn[i])dfs(i);
rebuild();
int ans = 0;
for(int i = 1;i <= n;i++){
if(!out[i]){
if(ans){ans=0;break;}
else ans = son[i];
}
}
printf("%d",ans);
return 0;
}
[bzoj1051] [HAOI2006]受欢迎的牛 (Tarjan+缩点)的更多相关文章
- bzoj1051 [HAOI2006]受欢迎的牛 tarjan&&缩点
题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所有奶 牛都是自恋狂,每头奶牛总是喜欢自己的.奶牛之间的“喜欢”是可以传递的——如果A喜 欢B,B喜欢C,那么A也喜欢C ...
- 【bzoj1051】 [HAOI2006]受欢迎的牛 tarjan缩点判出度算点数
[bzoj1051] [HAOI2006]受欢迎的牛 2014年1月8日7450 Description 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数(A,B),表示牛A认为牛B ...
- bzoj 1051: [HAOI2006]受欢迎的牛 tarjan缩点
1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2092 Solved: 1096[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]受欢迎的牛(tarjan)
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1051 由题意可知,被所有牛仰慕的牛之间也互相仰慕,则最后的答案一定是唯一的强连通分量,如 ...
- [HAOI2006]受欢迎的牛 tarjan缩点 + 拓扑排序
---题面--- 题解: 首先tarjan缩点应该还是容易想到的,因为喜爱具有传递性,所以一个强联通分量里面的点实际上是全部等效的,所以我们可以缩成一个方便判断, 缩完点之后整张图就变成了一个有向无环 ...
- BZOJ1051 [HAOI2006]受欢迎的牛 Tarjan 强连通缩点
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1051 题意概括 有n只牛,有m个羡慕关系. 羡慕关系具有传递性. 如果A羡慕B,B羡慕C,那么我们 ...
- [HAOI2006]受欢迎的牛 tarjan缩点 BZOJ1051
题目背景 本题测试数据已修复. 题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所有奶 牛都是自恋狂,每头奶牛总是喜欢自己的.奶牛之间的“喜欢”是可以传递的——如果A喜 ...
- bzoj 1051: [HAOI2006]受欢迎的牛 (Tarjan 缩点)
链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1051 思路: 首先用Tarjan把环缩成点,要想收到所有人的欢迎,那么这个点的出度必为0,且 ...
随机推荐
- 夺命雷公狗ThinkPHP项目之----企业网站28之网站前台左侧导航的实现
我们基于刚才在model层的找顶级分类的代码在进行修改即可: <?php namespace Home\Controller; use Think\Controller; class Commo ...
- 文本挖掘之特征选择(python 实现)
机器学习算法的空间.时间复杂度依赖于输入数据的规模,维度规约(Dimensionality reduction)则是一种被用于降低输入数据维数的方法.维度规约可以分为两类: 特征选择(feature ...
- [php] PHPStorm8 for Yincart project
PHPStorm8 license for Yincart project: https://github.com/yinheark/yincart2 User Name: Yincart ===== ...
- "服务器 '' 上的 MSDTC 不可用。"
调试程序的时候,出现异常消息“The underlying provider failed on Open”: 详细信息:和{"服务器 '' 上的 MSDTC 不可用."}: 网上 ...
- 【python cookbook】【数据结构与算法】14.对不原生支持比较操作的对象排序
问题:想在同一个类的实例之间做排序,但是它们并不原生支持比较操作. 解决方案:使用内建的sorted()函数可接受一个用来传递可调用对象的参数key,sorted利用该可调用对象返回的待排序对象中的某 ...
- scala特质
package com.ming.test /** * scala 特质,类似与java接口,但是比java接口强大,可以有实现方法,定义字段之类的 */ /** * 定义一个日志的特质 */ tra ...
- Java中删除指定文件夹文件夹下面有内容也删除使用递归方案
import java.io.File; import java.text.ParseException; import java.text.SimpleDateFormat; import java ...
- Java多线程中的进程,线程,并行,并发
2:什么是进程? 通过任务管理器我们就看到了进程的存在. 而通过观察,我们发现只有运行的程序才会出现进程. 进程:就是正在运行的程序. 进程是系统进行资源分配和调用的独立单位.每一个进程都有它自己的内 ...
- 自动封装Servlet HttpServletRequest请求成为一个POJO对象
自己写了个小工具类,将Servlet里面的HttpServletRequest请求封装成为一个POJO对象,可以复习一下Java的反射原理,开发中这个没什么用,毕竟都用MVC框架,框架都自带这种功能, ...
- weblogic安装失败
weblogic无法安装所选应用程序 Exception in AppMerge flows' progression Exception in AppMerge flows' progression ...