http://poj.org/problem?id=1236

首先还是缩点,然后入度为0的点的个数就是你要投文件个数。

然后我们对于入度和出度为0的点的个数取最大值即为答案。

(简单证明:入度和出度为0的点可以互相连一下成一个环,但是无法匹配的时候就只能随便连了)

#include<stack>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
inline int read(){int x=0,w=1;char ch=0;while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}return x*w;
}
const int maxn=101;
int cnt=0,head[maxn];
struct node{int w;int to;int nxt;
}edge[10001];
void add(int u,int v){cnt++;edge[cnt].to=v;edge[cnt].nxt=head[u];head[u]=cnt;return;
}
int dfn[maxn];
int low[maxn];
bool instack[maxn];
int dis[maxn];
int indeg[maxn];
int outdeg[maxn];
int to[maxn];
int t=0,l=0;
stack<int>q;
void tarjan(int u){int v;t++;dfn[u]=t;low[u]=t;q.push(u);instack[u]=1;for(int i=head[u];i!=0;i=edge[i].nxt){v=edge[i].to;if(!dfn[v]){tarjan(v);low[u]=min(low[u],low[v]);}else if(instack[v]){low[u]=min(low[u],dfn[v]);}}if(low[u]==dfn[u]){l++;do{v=q.top();q.pop();instack[v]=0;to[v]=l;}while(v!=u);}return;
}
int main(){int n=read();for(int i=1;i<=n;i++){int a=read();while(a){add(i,a);a=read();}}for(int i=1;i<=n;i++){if(!dfn[i]){tarjan(i);}}for(int i=1;i<=n;i++){for(int j=head[i];j;j=edge[j].nxt){int v=to[edge[j].to];int u=to[i];if(u!=v){indeg[v]++;outdeg[u]++;}}}int ans=0,anss=0;for(int i=1;i<=l;i++){if(!indeg[i]){ans++;}if(!outdeg[i]){anss++;}}if(l!=1)printf("%d\n%d\n",ans,max(ans,anss));elseprintf("%d\n%d\n",1,0);return 0;
}

转载于:https://www.cnblogs.com/luyouqi233/p/7840823.html

POJ1236:Network of Schools——题解相关推荐

  1. POJ1236 Network of Schools

    POJ1236 Network of Schools 文章目录 Description 题意: 题解: 代码: Description A number of schools are connecte ...

  2. POJ1236 Network of Schools【强连通】

    题意: N(2<N<100)各学校之间有单向的网络,每个学校得到一套软件后,可以通过单向网络向周边的学校传输,问题1:初始至少需要向多少个学校发放软件,使得网络内所有的学校最终都能得到软件 ...

  3. POJ-1236 Network of Schools 缩点

    题意:就是给我们一个网络 让我们求 1 选择最少的点传信 能够使得这个信息传遍整个网络 2 求加的最少的边 使得 加上这些边后整个图任取一个点信息就可以传到网络中任何一个店 分析: 对于1问 可以用t ...

  4. POJ 1236 Network of Schools(强连通 Tarjan+缩点)

    POJ 1236 Network of Schools(强连通 Tarjan+缩点) ACM 题目地址:POJ 1236 题意:  给定一张有向图,问最少选择几个点能遍历全图,以及最少加入�几条边使得 ...

  5. POJ 1236 Network of Schools(tarjan)

    Network of Schools Description A number of schools are connected to a computer network. Agreements h ...

  6. 【缩点】解题报告:luogu P2746 [USACO5.3]校园网Network of Schools(有向图、强连通分量、缩点)

    题目链接:P2746 [USACO5.3]校园网Network of Schools 用tarjan算法求出强连通分量,并且缩点,如果缩点后只有一个点,则答案为1,0 对于第一问,如果缩点后某一点的入 ...

  7. [tarjan] poj 1236 Network of Schools

    主题链接: http://poj.org/problem?id=1236 Network of Schools Time Limit: 1000MS   Memory Limit: 10000K To ...

  8. 洛谷 P2746 [USACO5.3]校园网Network of Schools (Tarjan,SCC缩点,DAG性质)

    P2746 [USACO5.3]校园网Network of Schools https://www.luogu.org/problem/P2746 题目描述 一些学校连入一个电脑网络.那些学校已订立了 ...

  9. Network of Schools(POJ-1236)

    Problem Description A number of schools are connected to a computer network. Agreements have been de ...

最新文章

  1. 10.VMware View 4.6安装与部署-view clint和view for ipad连接测试
  2. python生成10000个样本数据集_python产生随机样本数据
  3. 车辆工程用得到python吗_如今车辆工程真的不如以前了吗?
  4. android 拦截外拨电话,Android拦截外拨电话程序示例
  5. 容器编排技术 -- 使用 kubectl 创建Deployment
  6. Swift高速入门之函数
  7. python使用-Python 应该怎么去练习和使用?
  8. vc++ 类 定时器api_关于JS中一些重要的api实现, 巩固你的原生JS功底
  9. 关于PADS2007快捷键失效问题解决
  10. java正则表达式版本_java 正则表达式 版本号_java正则表达式?=.*_密码的正则表达式java...
  11. c语言万年历程序及注释,c语言万年历程序.doc
  12. flask学习笔记代码篇-10
  13. RabbitMq 消息中间件介绍初体验
  14. m4a转换成mp3,音频格式轻松转换
  15. 原生js编写学生信息管理系统——添加学生信息
  16. scratch python插件_scratch插件开发文档
  17. GDK8——强大的Linux内核调试工具
  18. Unicode 勾号、叉号、圈号的收集
  19. C语言:爱因斯坦的数学题
  20. eplan可运行于linux系统吗,Eplanp82.6安装对电脑操作系统的要求

热门文章

  1. RHEL4.4安装YUM
  2. PSU更新之后是否更改数据库版本号呢
  3. 2013编程之美资格赛【传话游戏】
  4. JS判断页面是否出现滚动条
  5. 恶意软件利用合法的代码签名证书横行Windows 系统
  6. 微软6月补丁日修复7个0day:6个已遭利用且其中1个是为 APT 服务的商用exploit
  7. Citrix 修复严重漏洞,可导致 XenMobile Server 遭接管
  8. Kubernetes集群部署1
  9. 移动广告聚合平台KeyMob:整合多家移动广告平台
  10. A*寻路算法的探寻与改良(一)