POJ1236:Network of Schools——题解
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——题解相关推荐
- POJ1236 Network of Schools
POJ1236 Network of Schools 文章目录 Description 题意: 题解: 代码: Description A number of schools are connecte ...
- POJ1236 Network of Schools【强连通】
题意: N(2<N<100)各学校之间有单向的网络,每个学校得到一套软件后,可以通过单向网络向周边的学校传输,问题1:初始至少需要向多少个学校发放软件,使得网络内所有的学校最终都能得到软件 ...
- POJ-1236 Network of Schools 缩点
题意:就是给我们一个网络 让我们求 1 选择最少的点传信 能够使得这个信息传遍整个网络 2 求加的最少的边 使得 加上这些边后整个图任取一个点信息就可以传到网络中任何一个店 分析: 对于1问 可以用t ...
- POJ 1236 Network of Schools(强连通 Tarjan+缩点)
POJ 1236 Network of Schools(强连通 Tarjan+缩点) ACM 题目地址:POJ 1236 题意: 给定一张有向图,问最少选择几个点能遍历全图,以及最少加入�几条边使得 ...
- POJ 1236 Network of Schools(tarjan)
Network of Schools Description A number of schools are connected to a computer network. Agreements h ...
- 【缩点】解题报告:luogu P2746 [USACO5.3]校园网Network of Schools(有向图、强连通分量、缩点)
题目链接:P2746 [USACO5.3]校园网Network of Schools 用tarjan算法求出强连通分量,并且缩点,如果缩点后只有一个点,则答案为1,0 对于第一问,如果缩点后某一点的入 ...
- [tarjan] poj 1236 Network of Schools
主题链接: http://poj.org/problem?id=1236 Network of Schools Time Limit: 1000MS Memory Limit: 10000K To ...
- 洛谷 P2746 [USACO5.3]校园网Network of Schools (Tarjan,SCC缩点,DAG性质)
P2746 [USACO5.3]校园网Network of Schools https://www.luogu.org/problem/P2746 题目描述 一些学校连入一个电脑网络.那些学校已订立了 ...
- Network of Schools(POJ-1236)
Problem Description A number of schools are connected to a computer network. Agreements have been de ...
最新文章
- 10.VMware View 4.6安装与部署-view clint和view for ipad连接测试
- python生成10000个样本数据集_python产生随机样本数据
- 车辆工程用得到python吗_如今车辆工程真的不如以前了吗?
- android 拦截外拨电话,Android拦截外拨电话程序示例
- 容器编排技术 -- 使用 kubectl 创建Deployment
- Swift高速入门之函数
- python使用-Python 应该怎么去练习和使用?
- vc++ 类 定时器api_关于JS中一些重要的api实现, 巩固你的原生JS功底
- 关于PADS2007快捷键失效问题解决
- java正则表达式版本_java 正则表达式 版本号_java正则表达式?=.*_密码的正则表达式java...
- c语言万年历程序及注释,c语言万年历程序.doc
- flask学习笔记代码篇-10
- RabbitMq 消息中间件介绍初体验
- m4a转换成mp3,音频格式轻松转换
- 原生js编写学生信息管理系统——添加学生信息
- scratch python插件_scratch插件开发文档
- GDK8——强大的Linux内核调试工具
- Unicode 勾号、叉号、圈号的收集
- C语言:爱因斯坦的数学题
- eplan可运行于linux系统吗,Eplanp82.6安装对电脑操作系统的要求