bzoj1051: [HAOI2006]受欢迎的牛(tarjan板子)
1051: [HAOI2006]受欢迎的牛
Time Limit: 10 Sec  Memory Limit: 162 MB
Submit: 6064  Solved: 3179
[Submit][Status][Discuss]
Description
Input
Output
一个数,即有多少头牛被所有的牛认为是受欢迎的。
Sample Input
1 2
2 1
2 3
Sample Output
HINT
Source
Resolution
tarjan缩点板子题√
先对于整个图tarjan缩一次点
只需要判断出度为0的点即可,记录一下这个缩点之后的点里有几头牛
板子我都不会打,(我太弱啦!
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
#define N 1000001
using namespace std;
inline int read()
{
int f=1,x=0;char ch=getchar();
while(ch>'9'||ch<'0')
{
if(ch=='-')
f=-1;
ch=getchar();
}
while(ch<='9'&&ch>='0')
{
x=(x<<3)+(x<<1)+ch-'0';
ch=getchar();
}
return f*x;
}
stack<int> s;
struct node {
int w, v, next;
}edge[100001*4];
int tot,head[N],size[N],son[N],ans,a[N],all[N],dfn[N],du[N],low[N],vis[N],sum,id[N];
void add(int u,int v)
{
edge[++tot].next=head[u];
edge[tot].v=v;
head[u]=tot;
}
void tarjan(int x)
{
s.push(x);
dfn[x]=low[x]=++tot;
for(int i=head[x];i!=-1;i=edge[i].next)
{
int v=edge[i].v;
if(!dfn[v])
{
tarjan(v);
low[x]=min(low[x],low[v]);
}
else if(!id[v])//id数组存放点缩点之后属于的新点
low[x]=min(low[x],dfn[v]);
}
if(dfn[x]==low[x])
{
sum++;//缩点的新点下标
while(!s.empty())
{
int num=s.top();
s.pop();
id[num]=sum;
all[sum]++;
if(x==num)break;
} }
return;
}
int cnt;
int main()
{
memset(head,-1,sizeof(head));
int i;
int n=read(),m=read();
for(i=1;i<=m;i++)
{//cout<<1<<endl;
int a=read(),b=read();
add(a,b);//cout<<1<<endl;
} // cout<<1<<endl;
tot=0;
for(i=1;i<=n;i++)
{
if(!dfn[i])tarjan(i);
}
for(i=1;i<=n;i++)
for(int j=head[i];j!=-1;j=edge[j].next)
{
int v=edge[j].v;
if(id[i]!=id[v])du[id[i]]++;//计算出度
} for(i=1;i<=sum;i++)
{
if(du[i]==0)
{
cnt++;
ans=i;
}
} if(cnt!=1) cout<<0;
else cout<<all[ans];
}
bzoj1051: [HAOI2006]受欢迎的牛(tarjan板子)的更多相关文章
- [BZOJ1051][HAOI2006] 受欢迎的牛 tarjan求联通分量
		
1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 5687 Solved: 3016[Submit][Sta ...
 - BZOJ1051 [HAOI2006]受欢迎的牛  Tarjan  强连通缩点
		
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1051 题意概括 有n只牛,有m个羡慕关系. 羡慕关系具有传递性. 如果A羡慕B,B羡慕C,那么我们 ...
 - bzoj1051 [HAOI2006]受欢迎的牛 tarjan&&缩点
		
题目描述 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所有奶 牛都是自恋狂,每头奶牛总是喜欢自己的.奶牛之间的“喜欢”是可以传递的——如果A喜 欢B,B喜欢C,那么A也喜欢C ...
 - [Bzoj1051][HAOI2006]受欢迎的牛(tarjan)
		
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1051 由题意可知,被所有牛仰慕的牛之间也互相仰慕,则最后的答案一定是唯一的强连通分量,如 ...
 - 【bzoj1051】 [HAOI2006]受欢迎的牛 tarjan缩点判出度算点数
		
[bzoj1051] [HAOI2006]受欢迎的牛 2014年1月8日7450 Description 每一头牛的愿望就是变成一头最受欢迎的牛.现在有N头牛,给你M对整数(A,B),表示牛A认为牛B ...
 - bzoj1051 [HAOI2006]受欢迎的牛
		
1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 4773 Solved: 2541[Submit][Sta ...
 - bzoj 1051: [HAOI2006]受欢迎的牛 tarjan缩点
		
1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2092 Solved: 1096[Submit][Sta ...
 - BZOJ 1051: [HAOI2006]受欢迎的牛( tarjan )
		
tarjan缩点后, 有且仅有一个出度为0的强连通分量即answer, 否则无解 ----------------------------------------------------------- ...
 - [Bzoj1051][HAOI2006]受欢迎的牛(缩环)
		
1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 6676 Solved: 3502[Submit][Sta ...
 
随机推荐
- The.Glory.of.Innovation 创新之路3放飞好奇
			
教育最重要的就是 问题不在于教他各种学问,而在于培养他爱好学问的兴趣,而且在这种兴趣充分增长起来的时候,教他以研究学问的方法. ———— 卢梭 如何辨识不同的观点, 老师考查的重点不在于学生 ...
 - CSS常见Bugs及解决方案列表
			
以下实例默认运行环境都为Standard mode 如何在IE6及更早浏览器中定义小高度的容器? 方法: #test{overflow:hidden;height:1px;font-size:0;li ...
 - SqlBulkCopy批量插入数据神器
			
1.简单例子 class Program { static void Main(string[] args) { Stopwatch sw = new Stopwatch(); DataTable d ...
 - cf666 C. Codeword 组合数学
			
题解: 首先暴力很显然 f[i][j]表示到第i个位置,串匹配到j 这样每次是n^2的 我们假设每个位置匹配的第一个位置 然后从这个到上一个位置一定不能等于这个串的值 ans=simga{i,C(i- ...
 - mysql数据类型(三)
			
MySQL 数据类型 MySQL中定义数据字段的类型对你数据库的优化是非常重要的. MySQL支持多种类型,大致可以分为三类:数值.日期/时间和字符串(字符)类型. 数值类型 MySQL支持所有标准S ...
 - python全栈开发day53-mysql
			
mysql的使用 (1)下载 解压到指定的目录. (2)取到C:\mysql-5.7.22-winx64\mysql-5.7.22-winx64\bin路径 添加到系统的环境变量中,后面一定要加分号. ...
 - Codeforces 887D Ratings and Reality Shows
			
Ratings and Reality Shows 参加talk show的时间肯定是在某个t[ i ]的后一秒, 枚举一下就好了. #include<bits/stdc++.h> #de ...
 - 自动驾驶系统 bfs
			
一家科技公司有一块试验地用于测试自动驾驶系统.试验地由n×m个格子组成,从上到下依次编号为第1到n行,从左到右依次编号为第1到m列.试验车位于其中的某个格子上,每次自动驾驶系统可以控制汽车往上下左右移 ...
 - TF之NN:matplotlib动态演示深度学习之tensorflow将神经网络系统自动学习并优化修正并且将输出结果可视化—Jason niu
			
import tensorflow as tf import numpy as np import matplotlib.pyplot as plt def add_layer(inputs, in_ ...
 - POJ 2112 Optimal Milking (二分+最短路+最大流)
			
<题目链接> 题目大意: 有K台挤奶机和C头奶牛,都被视为物体,这K+C个物体之间存在路径.给出一个 (K+C)x(K+C) 的矩阵A,A[i][j]表示物体i和物体j之间的距离,有些物体 ...