题目背景

浙江省的几所OI强校的神犇发明了一种人工智能,可以AC任何题目,所以他们决定建立一个网络来共享这个软件。但是由于他们脑力劳动过多导致全身无力身体被♂掏♂空,他们来找你帮助他们。

题目描述

共有n所学校(n<=10000)已知他们实现设计好的网络共m条线路,为了保证高速,网络是单向的。现在请你告诉他们至少选几所学校作为共享软件的母机母鸡,能使每所学校都可以用上。再告诉他们至少要添加几条线路能使任意一所学校作为母机母鸡都可以使别的学校使用上软件。

输入格式

第一行一个整数n。

接下来n行每行有若干个整数,用空格空格隔开。

第i-1行的非零整数x,表示从i到x有一条线路。以0作为结束标志。

输出格式

第一行一个整数表示问题1的答案。

第二行回答问题2.


#include<queue>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<vector>
#define ll long long
using namespace std;
const int N=1e6+10,M=5*N;
int next[M],head[N],go[M],tot;
inline void add(int u,int v){
next[++tot]=head[u];head[u]=tot;go[tot]=v;
}
int dfn[N],low[N],st[N],co[N],num,col,top;
void Tarjan(int u){
dfn[u]=low[u]=++num;
st[++top]=u;
for(int e=head[u];e;e=next[e]){
int v=go[e];
if(!dfn[v]){
Tarjan(v);
low[u]=min(low[u],low[v]);
}
else
if(!co[v])
low[u]=min(low[u],dfn[v]);
}
if(dfn[u]==low[u]){
co[u]=++col;
while(st[top]!=u){
co[st[top]]=col;
--top;
}
--top;
}
}
struct E{
int u,v;
}e[M];
int sum=0,in[N],out[N];
int main(){
int n;
cin>>n;
for(int i=1,x;i<=n;i++){
scanf("%d",&x);
while(x!=0){
add(i,x);
e[++sum]=(E){i,x};
scanf("%d",&x);
}
}
for(int i=1;i<=n;i++)
if(!dfn[i])Tarjan(i);
for(int i=1;i<=sum;i++){
if(co[e[i].u]!=co[e[i].v])
in[co[e[i].v]]++,out[co[e[i].u]]++;
}
int ans=0,op=0;
for(int i=1;i<=col;i++){
if(in[i]==0)ans++;
if(out[i]==0)op++;
}
printf("%d\n%d",ans,op);
}

最新文章

  1. 【笔记】jstree插件的基本使用
  2. spring jpa 实体互相引用返回restful数据循环引用报错的问题
  3. Java容器之旅:容器基础知识总结
  4. 【poj1260】 Pearls
  5. JS语句循环(100以备奇偶数、100以内与7先关的数、100以内整数的和、10以内阶乘、乘法口诀、篮球弹起高度、64格子放东西)
  6. Contoso 大学 - 6 – 更新关联数据
  7. 长安CS15_手动&mdash;&mdash;16款
  8. OpenCV for c++Builder
  9. SQL Server 2008性能故障排查(三)——I/O
  10. 简单说说Android自定义view学习推荐的方式
  11. Android EventBus技能点梳理
  12. python基础一 ------linux某目录下批量的为特定文件加入可执行权限
  13. C#设计模式(7)——适配器模式(Adapter Pattern)(转)
  14. Windows as a Service(1)&mdash;&mdash; Windows 10服务分支
  15. bzoj 4811 由乃的OJ
  16. Java核心技术-接口、lambda表达式与内部类
  17. Android开发工具--AndroidStudio
  18. STM32中printf重定向到串口
  19. Hints
  20. Java网络编程注意事项1

热门文章

  1. 模块参数,系统调用,字符设备编程重要数据结构,设备号的申请与注册,关于cdev的API
  2. java遍历一个实体
  3. 花了几个小时总结了一些容易出错的 Java 知识点!
  4. ESP8266 智能配网 断电重连
  5. hdu 1556 Color the ball (技巧 || 线段树)
  6. nyoj 47-过河问题 (贪心)
  7. HTML的条件注释和hack技术
  8. tomcat-9.0.20缓存空间不足
  9. C语言之路
  10. DDD实战与进阶 - 值对象