P2746 [USACO5.3]校园网Network of Schools
把所有学校的关系构成一个图,显然一个强联通分量的所有学校只要有一个有新软件,其他学校也都会有
考虑缩点,发现入度为 0 的块一定要给,因为没有其他人给它
入度不为 0 的块一定有其他人给,我们只要给 能给它的块 提供软件就可以了
所以就是入度为 0 的块一定给,不为 0 的块一定不用给
子任务A就是求出入度为 0 的块的数量
然后考虑子任务B
显然出度为 0 的块一定要连边出去,入度为 0 的块也一定要有边连过来
所以出度为 0 的块连给谁呢,当然给入度为 0 的块
所以就是求 出度为 0 的块数量 和 入度为 0 的块的数量的较大值
当然别忘了特判整个图本身就是联通块的情况
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
inline int read()
{
int x=,f=; char ch=getchar();
while(ch<''||ch>'') { if(ch=='-') f=-; ch=getchar(); }
while(ch>=''&&ch<='') { x=(x<<)+(x<<)+(ch^); ch=getchar(); }
return x*f;
}
const int N=;
int n;
int fir[N],from[N<<],to[N<<],cntt;
inline void add(int &a,int &b)
{
from[++cntt]=fir[a];
fir[a]=cntt; to[cntt]=b;
} //Tarjan模板
int dfs_clock,dfn[N],low[N],st[N],Top;
int bel[N],tot;//存每个点属于哪个块
void Tarjan(int x)
{
dfn[x]=low[x]=++dfs_clock; st[++Top]=x;
for(int i=fir[x];i;i=from[i])
{
int &v=to[i];
if(!dfn[v]) Tarjan(v),low[x]=min(low[x],low[v]);
else if(!bel[v]) low[x]=min(low[x],dfn[v]);
}
if(low[x]==dfn[x])
{
tot++;
while(st[Top]!=x) { bel[st[Top]]=tot; Top--; }
bel[x]=tot; Top--;
}
}
int in[N],out[N],ans1,ans2;//入度,出度,入度为0的数量和出度为0的数量
inline void build()//计算in,ouw,ans1,ans2
{
for(int i=;i<=n;i++)
for(int j=fir[i];j;j=from[j])
{
int &t=to[j];
if(bel[i]==bel[t]) continue;//同块内不考虑
out[bel[i]]++; in[bel[t]]++;
}
for(int i=;i<=tot;i++)
{
if(!in[i]) ans1++;
if(!out[i]) ans2++;
}
} int main()
{
int a;
n=read();
for(int i=;i<=n;i++)
{
a=read();
while(a) add(i,a),a=read();
}
for(int i=;i<=n;i++) if(!bel[i]) Tarjan(i);
build();
if(tot==) printf("%d\n%d",,);//特判
else printf("%d\n%d",ans1,max(ans1,ans2));
return ;
}
P2746 [USACO5.3]校园网Network of Schools的更多相关文章
- 洛谷 P2746 [USACO5.3]校园网Network of Schools 解题报告
P2746 [USACO5.3]校园网Network of Schools 题目描述 一些学校连入一个电脑网络.那些学校已订立了协议:每个学校都会给其它的一些学校分发软件(称作"接受学校&q ...
- P2746 [USACO5.3]校园网Network of Schools(Tarjan)
P2746 [USACO5.3]校园网Network of Schools 题目描述 一些学校连入一个电脑网络.那些学校已订立了协议:每个学校都会给其它的一些学校分发软件(称作“接受学校”).注意即使 ...
- P2746 [USACO5.3]校园网Network of Schools// POJ1236: Network of Schools
P2746 [USACO5.3]校园网Network of Schools// POJ1236: Network of Schools 题目描述 一些学校连入一个电脑网络.那些学校已订立了协议:每个学 ...
- 洛谷 P2746 [USACO5.3]校园网Network of Schools (Tarjan,SCC缩点,DAG性质)
P2746 [USACO5.3]校园网Network of Schools https://www.luogu.org/problem/P2746 题目描述 一些学校连入一个电脑网络.那些学校已订立了 ...
- 洛谷P2746 [USACO5.3]校园网Network of Schools
题目描述 一些学校连入一个电脑网络.那些学校已订立了协议:每个学校都会给其它的一些学校分发软件(称作“接受学校”).注意即使 B 在 A 学校的分发列表中, A 也不一定在 B 学校的列表中. 你要写 ...
- 【luogu P2746 [USACO5.3]校园网Network of Schools】 题解
题目链接:https://www.luogu.org/problemnew/show/P2812 注意:判断出入度是否为0的时候枚举只需到颜色的数量. 坑点:当只有一个强连通分量时,不需要再添加新边. ...
- luogu P2746 [USACO5.3]校园网Network of Schools
题目描述 一些学校连入一个电脑网络.那些学校已订立了协议:每个学校都会给其它的一些学校分发软件(称作“接受学校”).注意即使 B 在 A 学校的分发列表中, A 也不一定在 B 学校的列表中. 你要写 ...
- P2746 [USACO5.3]校园网Network of Schools tarjan 缩点
题意 给出一个有向图,A任务:求最少需要从几个点送入信息,使得信息可以通过有向图走遍每一个点B任务:求最少需要加入几条边,使得有向图是一个强联通分量 思路 任务A,比较好想,可以通过tarjan缩点, ...
- 洛谷 P2746 [USACO5.3]校园网 Network of Schools 题解
Tarjan 模板题 第一问就是缩点之后看有多少个入度为零的点就好了. 第二问是在缩点后将每个点的入度和出度都求出(只要有入度或出度就置为1),然后比较哪个有值的多,将多的作为答案输出.原因是由题可得 ...
随机推荐
- LeetCode:Add Digits - 非负整数各位相加
1.题目名称 Add Digits (非负整数各位相加) 2.题目地址 https://leetcode.com/problems/add-digits/ 3.题目内容 英文:Given a non- ...
- DOM基础知识整理
--<JavaScript高级程序设计>Chapter10学习笔记 一.节点层次 1.Node类型 1)(Node).nodeType属性 节点nodeType属性有12种. 检测node ...
- app专项测试(稳定性测试、安全性测试)
https://blog.csdn.net/xiaomaoxiao336368/article/details/84887948
- 三 akka学习 actor的例子
(转载: http://blog.csdn.net/chenleixing/article/details/44044243 ) Java并发编程的4种风格:Threads,Executors,For ...
- 请问两个div之间的上下距离怎么设置
转自:https://zhidao.baidu.com/question/344630087.html 楼上说的是一种方法,yanzilisan183 <div style="marg ...
- k8s 基础 docker-ce 安装(注k8s 的安装需要用此版docker 否则会报错 )
yum install -y yum-utils yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/ ...
- %.*s, printf
%.*s_百度搜索 c语言%.*s是什么_百度知道 *用来指定宽度,对应一个整数 .(点)与后面的数合起来 是指定必须输出这个宽度,如果所输出的字符串长度大于这个数,则按此宽度输出,如果小于,则输出实 ...
- Spring开发环境搭建
----------------siwuxie095 Spring 是运行在 Java 环境下的开发框架,因此在开发前需要 准备以下相关软件: JDK 7 或者以上版本 Eclipse 4 或以上版本 ...
- VCF文件处理工具PyVCF
vcf格式示例 ##fileformat=VCFv4.1 ##FILTER=<ID=LowQual,Description=”Low quality”> ##FORMAT=<ID=A ...
- Entity Framework Code-First(9.8):DataAnnotations - Column Attribute
DataAnnotations - Column Attribute: Column attribute can be applied to properties of a class. Defaul ...