Luogu 2812 校园网络 - Tarjan
Description
给出一个有向图, 要求出至少从哪几个点出发, 能不漏地经过所有节点。
再求出至少加几条边, 才能使图变成一个强联通分量
Solution
求出所有强联通分量, 形成一个有向无环图, 第一问题就是求出有多少强联通分量的入度为 $0$
第二个问题就是求出 入度为$0 $和 出度为$0$ 的强联通分量的数量 的 最大值, 想象一下就可以了。
在整个图都是强联通分量下, 第二个问题答案为 $0$。
Code
#include<cstdio>
#include<cstring>
#include<algorithm>
#define rd read()
#define rep(i,a,b) for(int i = (a); i <= (b); ++i)
#define per(i,a,b) for(int i = (a); i >= (b); --i)
using namespace std; const int N = ;
const int M = 6e6; int head[N], tot;
int col[N], col_num, size[N];
int n, dfn[N], low[N], cnt, vis[N];
int st[N], tp, ans1, ans2;
int chu[N], ru[N]; struct edge {
int nxt, to, fr;
}e[M]; int read() {
int X = , p = ; char c = getchar();
for(; c > '' || c < ''; c = getchar()) if(c == '-') p = -;
for(; c >= '' && c <= ''; c = getchar()) X = X * + c - '';
return X * p;
} void add(int u, int v) {
e[++tot].to = v;
e[tot].nxt = head[u];
e[tot].fr = u;
head[u] = tot;
} void tarjan(int u) {
dfn[u] = low[u] = ++cnt;
st[++tp] = u;
vis[u] = ;
for(int i = head[u]; i; i = e[i].nxt) {
int nt = e[i].to;
if(!dfn[nt]) tarjan(nt), low[u] = min(low[u], low[nt]);
else if(vis[nt]) low[u] = min(low[u], dfn[nt]);
}
if(dfn[u] == low[u]) {
col_num++;
for(; tp;) {
int nt = st[tp--];
vis[nt] = ;
col[nt] = col_num;
if(nt == u) break;
}
}
} int main()
{
n = rd;
for(int i = ; i <= n; ++i) {
for(; ;) {
int x = rd;
if(!x) break;
add(i, x);
}
}
for(int i = ; i <= n; ++i)
if(!dfn[i]) tarjan(i);
for(int i = ; i <= tot; ++i) {
int x = e[i].fr, y = e[i].to;
if(col[x] == col[y]) continue;
ru[col[y]]++; chu[col[x]]++;
}
for(int i = ; i <= col_num; ++i)
if(!ru[i]) ans1++;
printf("%d\n", ans1);
if(col_num == ) return printf("0\n"), ;
for(int i = ; i <= col_num; ++i)
if(!chu[i]) ans2++;
printf("%d\n", max(ans1, ans2));
}
Luogu 2812 校园网络 - Tarjan的更多相关文章
- luogu P2812 校园网络【[USACO]Network of Schools加强版】|Tarjan
题目背景 浙江省的几所OI强校的神犇发明了一种人工智能,可以AC任何题目,所以他们决定建立一个网络来共享这个软件.但是由于他们脑力劳动过多导致全身无力身体被♂掏♂空,他们来找你帮助他们. 题目描述 共 ...
- 洛谷P2812 校园网络[数据加强版] [Tarjan]
题目传送门 校园网络 题目背景 浙江省的几所OI强校的神犇发明了一种人工智能,可以AC任何题目,所以他们决定建立一个网络来共享这个软件.但是由于他们脑力劳动过多导致全身无力身体被♂掏♂空,他们来找你帮 ...
- nyoj 120 校园网络(求添加多少条边使整个图强连通)
校园网络 时间限制:3000 ms | 内存限制:65535 KB 难度:5 描述 南阳理工学院共有M个系,分别编号1~M,其中各个系之间达成有一定的协议,如果某系有新软件可用时,该系将允许一 ...
- 洛谷 P2812 校园网络【[USACO]Network of Schools加强版】 解题报告
P2812 校园网络[[USACO]Network of Schools加强版] 题目背景 浙江省的几所OI强校的神犇发明了一种人工智能,可以AC任何题目,所以他们决定建立一个网络来共享这个软件.但是 ...
- 洛谷—— P2812 校园网络
P2812 校园网络 题目背景 浙江省的几所OI强校的神犇发明了一种人工智能,可以AC任何题目,所以他们决定建立一个网络来共享这个软件.但是由于他们脑力劳动过多导致全身无力身体被♂掏♂空,他们来找你帮 ...
- [Luogu 2604] ZJOI2010 网络扩容
[Luogu 2604] ZJOI2010 网络扩容 第一问直接最大流. 第二问,添加一遍带费用的边,边权 INF,超级源点连源点一条容量为 \(k\) 的边来限流,跑费用流. 大约是第一次用 nam ...
- 校园网络 luogu P2812 (又是强联通)
题目传送门!(luogu) 首先考虑问题一 不难想到,如果有一个学校作为终端机,那么跟其处于同一个强联通中的所有学校就可以不用作为终端机了. 那么,问题一也就迎刃而解了:找到所有入度为0的缩点.因为这 ...
- tyvj 1153 间谍网络 tarjan有向图强连通
P1153 - 间谍网络 From ForeverBell Normal (OI)总时限:13s 内存限制:128MB 代码长度限制:64KB 描述 Description 由于外国 ...
- 洛谷P2812校园网络
传送门啦 其实这个题只要读懂分析好题意就不是很难. 就是将一个有向图进行缩点操作,把一个强连通分量看成一个点,求入度为 0 的点和出度为 0 的点各有多少. 在这里先向大家推荐两个题目,建议大家先去看 ...
随机推荐
- gdufe1534-小小怪一定认真听课-dfs
Problem Description: 又到了选课的时间啦.大一萌新小小怪下士第一次选课没有制定好高效的策略,导致第一学期的学分不高,他想在第二学期获得尽可能多的学分,因此作为小小怪下士的上司搭档兼 ...
- com.google.gson.stream.MalformedJsonException
今天下午项目更新后,调用接口时,提示“请求失败”,发现项目网络框架解析时,报错如下:com.google.gson.stream.MalformedJsonException: Unterminate ...
- ftp删除目录和文件,目录下有文件删除提示【550 Remove directory operation failed.】
注意:目录下有文件,直接删除目录会失败,提示550 Remove directory operation failed. 必须先将目录下的文件都删除,才能删除目录 ftp命令行: ftp删除目 ...
- background和background-color的区别
在设置输入框变成一条线的样式时遇到一个小问题. 无论怎么设置 输入框的背景都没有变 而设置background: #aaa;背景就改变了. 后来发现原因 background 可以设置 背景颜色.背景 ...
- mysqlli
./configure --with-mysql=/usr/bin/mysql_config \ --with-mysqli=mysqlnd \ --with-pdo-mysql=mysqlnd ht ...
- leetcode 字符串类型题
1,Vaild Palindrome bool isPalindrome(string& s) { transform(s.begin(), s.end(), s.begin(), tolow ...
- NumPy IO
NumPy IO Numpy 可以读写磁盘上的文本数据或二进制数据. NumPy 为 ndarray 对象引入了一个简单的文件格式:npy. npy 文件用于存储重建 ndarray 所需的数据.图形 ...
- C/C++ typedef用法详解(真的很详细)
第一.四个用途 用途一: 定义一种类型的别名,而不只是简单的宏替换.可以用作同时声明指针型的多个对象.比如:char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, ...
- 198. House Robber(Array; DP)
You are a professional robber planning to rob houses along a street. Each house has a certain amount ...
- console报错:No mapping found for HTTP request with URI(xxx)
console报错:No mapping found for HTTP request with URI(xxx) 报错可能原因: 1;contorl未加载成功 2;资源访问失败(所有访问全部被Dis ...