100个学校,有单向网络连接,从而分享软件。

问题一:几个学校得到软件就可使所有学校都得到?

问题二:再加几条单向网络可以使得“任意学校得到软件,就可使得所有学校都有软件”?

——————————————————————————————————————————————————————————

强连通分量内部可做到“一点得,全部得”,从而可以看做一个点,所以,缩点,得到有向无环图。

在图中,入读为0的点因为无人与他分享,所以必须直接获得——问题一答案。

想要“一点得,全部得”,就要全部点成为一个强连通分量,加边的多少由入读为0的点数和出度为0的点数的最大值决定。——问题二答案

注意:如果所有点本身就是强连通分量,需要特判。

——————————————————————————————————————————————————————————

 #include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<stack> using namespace std;
const int maxn=;
int n;
struct edge
{
int u,v,next;
}e[],ee[];
int head[],headd[],js,jss;
int dfsn[],low[],visx;
stack<int>st;
bool ins[];
int chudu[],rudu[];
int sshu,belong[];
void addage(int u,int v,edge e[],int head[],int &js)
{
e[++js].u=u;e[js].v=v;
e[js].next=head[u];head[u]=js;
}
void tarjan(int u)
{
dfsn[u]=low[u]=++visx;
st.push(u);
ins[u]=;
for(int i=head[u];i;i=e[i].next)
{
int v=e[i].v;
if(dfsn[v]==)
{
tarjan(v);
low[u]=min(low[u],low[v]);
}
else if(ins[v] && low[u]>dfsn[v])low[u]=dfsn[v];
}
if(dfsn[u]==low[u])
{
sshu++;
int tp;
do
{
tp=st.top();
st.pop();
ins[tp]=;
belong[tp]=sshu;
}
while(tp!=u);
}
}
int main()
{
scanf("%d",&n);
for(int v,i=;i<=n;i++)
{
while(scanf("%d",&v)== && v!=)
{
addage(i,v,e,head,js);
}
}
for(int i=;i<=n;i++)
if(dfsn[i]==)tarjan(i);
for(int i=;i<=js;i++)
{
int u=e[i].u,v=e[i].v;
if(belong[u]!=belong[v])
{
addage(belong[u],belong[v],ee,headd,jss);
chudu[belong[u]]++;rudu[belong[v]]++;
}
}
int chudu0=,rudu0=;
for(int i=;i<=sshu;i++)
{
if(chudu[i]==)chudu0++;
if(rudu[i]==)rudu0++;
}
printf("%d\n",rudu0);
if(sshu==)printf("0\n");
else printf("%d\n",max(chudu0,rudu0));
return ;
}

POJ1236 network of schools的更多相关文章

  1. P2746 [USACO5.3]校园网Network of Schools// POJ1236: Network of Schools

    P2746 [USACO5.3]校园网Network of Schools// POJ1236: Network of Schools 题目描述 一些学校连入一个电脑网络.那些学校已订立了协议:每个学 ...

  2. poj-1236.network of schools(强连通分量 + 图的入度出度)

    Network of Schools Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 27121   Accepted: 10 ...

  3. POJ1236 - Network of Schools tarjan

                                                     Network of Schools Time Limit: 1000MS   Memory Limi ...

  4. POJ1236 Network of Schools (强连通)(缩点)

                                                                Network of Schools Time Limit: 1000MS   ...

  5. POJ-1236 Network of Schools,人生第一道Tarjan....

    Network of Schools 题意:若干个学校组成一个计算机网络系统,一个学校作为出发端连接着若干个学校,信息可以传送到这些学校.被链接的学校不需要再次与出发端相连,现在问你:A:最少选几个学 ...

  6. POJ1236 Network of Schools —— 强连通分量 + 缩点 + 入出度

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

  7. POJ1236 Network of Schools (强连通分量,注意边界)

    A number of schools are connected to a computer network. Agreements have been developed among those ...

  8. [POJ1236]Network of Schools(并查集+floyd,伪强连通分量)

    题目链接:http://poj.org/problem?id=1236 这题本来是个强连通分量板子题的,然而弱很久不写tarjan所以生疏了一下,又看这数据范围觉得缩点这个事情可以用点到点之间的距离来 ...

  9. poj1236 Network of Schools【强连通分量(tarjan)缩点】

    转载请注明出处,谢谢:http://www.cnblogs.com/KirisameMarisa/p/4316263.html  ---by 墨染之樱花 [题目链接]http://poj.org/pr ...

随机推荐

  1. [ json editor] 如何在网页中使用Json editor 插件

    [目的] 在自己的网页上交由用户进行json的可视化编辑 [难点]1.json中含有递归嵌套的数组和对象 2.json中的基本值类型有数字.字符串和布尔型 [方法]使用daviddurman的Flex ...

  2. 基础篇-struts2的搭建

    .---恢复内容开始--- struts的官网是英文版的,不懂怎么下载的话可以跟着我的步骤来做, 首先去struts的官网http://apache.org/下载struts的报jar类包. 往下拉到 ...

  3. Maven项目生成 jar直接运行

    pom.xml配置如下:红色部分要注意 在eclipse中maven生成可运行的jar需要指定可运行的主程序 <?xml version="1.0" encoding=&qu ...

  4. appium + maven +jenkins 基本入门之二 新建maven 的java项目

    1: 下载maven : 1.0 :设置maven的环境变量: 1.1: 设置maven本地仓库: 在下载好的maven文件夹找到 apache-maven-3.3.9/conf 文件夹下的setti ...

  5. Chrome 浏览器提示adobe flash player不是最新版本

    百度下载最新版. 刷新 Chrome浏览器.更换其他的浏览器. 刷新过后,无效. 打开Flash Player 检查安装的版本. IE会链接到官网. 对应自己的系统.找到自己用的浏览器.看是否一致. ...

  6. DELL服务器系统安装

    背景环境:DELL poweredge R920 和DELL poweredege R730 新机服务器系统安装 由于以前没有自己单独装过这样的服务器,总感觉复杂,今天实战了几台服务器,挺简单的,为了 ...

  7. 在angular中实现下拉框的两种方式 ng-repeat和 ng-option

    1. ng-repeat实现下拉框: select下拉框里option组装成下拉框,这里利用ng-repeat指令来创建 实现源码   <!DOCTYPE html> <html&g ...

  8. Programming Entity Framework 翻译(2)-目录2-章节

    How This Book Is Organized 本书组织结构 Programming Entity Framework, Second Edition, focuses on two ways ...

  9. ROW_NUMBER() OVER函数的用法

    语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN) partition 划分,分割 --ROW_NUMBER() 就是生成一个有顺序的行 ...

  10. springboot 使用c3p0数据库连接池的方法

    使用springboot开发时,默认使用内置的tomcat数据库连接池,经常碰到这种情况:运行时间一长,数据库连接中断了.所以使用c3p0连接池吧. 引入的maven依赖: <dependenc ...