[Luogu] 校园网Network of Schools
https://www.luogu.org/problemnew/show/2746
Tarjan 缩点
判断入度为0的点的个数与出度为0的点的个数的关系
注意全缩为一个点的情况
- #include <cstdio>
- #include <iostream>
- #include <algorithm>
- #include <cmath>
- using namespace std;
- const int N = ;
- #define yxy getchar()
- int n, now = , Tarjan_tim, Bel_tim, Top;
- int head[N], Low[N], Dfn[N], Out[N], In[N], Belong[N], Stack[N];
- bool vis[N];
- struct Node {int u, v, nxt;} G[N * N * ];
- inline int read(){
- int x = ; char c = yxy;
- while(c < '' || c > '') c = yxy;
- while(c >= '' && c <= '') x = x * + c - '', c = yxy;
- return x;
- }
- inline void add(int u, int v){
- G[now].v = v; G[now].nxt = head[u]; head[u] = now ++;
- }
- void Tarjan(int u){
- Dfn[u] = Low[u] = ++ Tarjan_tim;
- vis[u] = ; Stack[++ Top] = u;
- for(int i = head[u]; ~ i; i = G[i].nxt){
- int v = G[i].v;
- if(!Dfn[v]){
- Tarjan(v);
- Low[u] = min(Low[u], Low[v]);
- }
- else if(vis[v]) Low[u] = min(Low[u], Dfn[v]);
- }
- if(Dfn[u] == Low[u]){
- Bel_tim ++;
- Belong[u] = Bel_tim;
- vis[u] = ;
- while(Stack[Top] != u){
- Belong[Stack[Top]] = Bel_tim;
- vis[Stack[Top]] = ;
- Top --;
- } Top --;
- }
- }
- void Build_G(){
- for(int u = ; u <= n; u ++){
- for(int i = head[u]; ~ i; i = G[i].nxt){
- int v = G[i].v;
- if(Belong[u] != Belong[v]){
- Out[Belong[u]] ++; In[Belong[v]] ++;
- }
- }
- }
- }
- int main()
- {
- n = read();
- for(int i = ; i <= n; i ++) head[i] = -;
- for(int i = ; i <= n; i ++){
- int v = read();
- while(v) {
- add(i, v);
- v = read();
- }
- }
- for(int i = ; i <= n; i ++) if(!Dfn[i]) Tarjan(i);
- Build_G();
- int Out_js(), In_js();
- for(int i = ; i <= Bel_tim; i ++){
- if(!Out[i]) Out_js ++;
- if(!In[i]) In_js ++;
- }
- if(Bel_tim == ) cout << "" << "\n" << "";
- else cout << In_js << "\n" << max(Out_js, In_js);
- return ;
- }
[Luogu] 校园网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 解题报告
P2746 [USACO5.3]校园网Network of Schools 题目描述 一些学校连入一个电脑网络.那些学校已订立了协议:每个学校都会给其它的一些学校分发软件(称作"接受学校&q ...
- 【洛谷P2746】[USACO5.3]校园网Network of Schools
校园网Network of Schools 第一问:Tarjan缩点,搞出每一个连通块,入度为零的连通块是需要必须接受新软件副本的,统计数量即可 第二问:要让整个图构成一个环,显然要将入度为零点和出度 ...
- 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 题目描述 一些学校连入一个电脑网络.那些学校已订立了协议:每个学 ...
- 【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 学校的列表中. 你要写 ...
- luogu P2746 [USACO5.3]校园网Network of Schools 题解
前言: 火星题... 但是我调了半天,最后看了题解才明白. Wtcl 解析: 显然先缩个点. 第一问,就是问多少入度为0的点. 第二问,抽象一下就是要添加一些边,让一个DAG变成一个SCC,求最小边数 ...
- COGS——C 908. 校园网 || 洛谷——P 2746 [USACO5.3]校园网Network of Schools
http://www.cogs.pro/cogs/problem/problem.php?pid=908 || https://www.luogu.org/problem/show?pid=27 ...
随机推荐
- SAS学习笔记26 方差分析
对于多于两组(k>2)样本均数的比较,t检验不再适用,方差分析(analysis of variance, ANOVA)则是解决上述问题的重要分析方法.方差分析由R.A.Fisher(1923) ...
- java中的自动装箱和拆箱
一.什么是自动装箱和拆箱: 我们知道java为8种基本类型分别提供了对应的包装类型,在Java SE5之前,如果要生成一个数值为10的Integer对象,必须这样进行: Integer i=new I ...
- Unity性能优化-对象池
1.对象池Object Pool的原理: 有些GameObject是在游戏中需要频繁生成并销毁的(比如射击游戏中的子弹),以前的常规做法是:Instantiate不断生成预设件Prefab,然后采用碰 ...
- LeetCode 754. Reach a Number
754. Reach a Number(到达终点数字) 链接:https://leetcode-cn.com/problems/reach-a-number/ 题目: 在一根无限长的数轴上,你站在0的 ...
- 作业16:java枚举类的秘密
JAVA代码 public enum EnumTest { HELLO,WORLD } 字节码 public final class EnumTest extends java.lang.Enum&l ...
- CSS过渡效果transition和动画
一.过渡效果 可以在不适用Flash和js 的情况下实现过渡效果 属性 描述 transition 简写属性,用于在一个属性中设置四个过渡属性 transition-property 规定应用过渡的c ...
- mysql打印用户权限的小技巧
mysql5.5 5.6 SHOW GRANTS FOR mysql> SELECT DISTINCT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host ...
- Sliverlight/WPF 样式使用方法
1,UserControl 页面级样式: UserControl.Resources style setter Property value. TargetType为应用的类型 <UserCon ...
- coding++ :MySQL函数——FIND_IN_SET()
语法:FIND_IN_SET(str,strlist) 定义: 1). 假如字符串 str 在由N子链组成的字符串列表 strlist 中,则返回值的范围在1到N之间. 2). 一个字符串列表就是一个 ...
- linux 基础11-例行性命令
1. 什么是例行性命令 1.1 linux工作排程的种类: linux例行性命令主要有两种: at:仅执行一次就从linux的任务中取消 cron:将持续例行性的工作下去 1.2 系统常见的例行性命令 ...