题意:

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

思路:

我们可以先进行缩点求出DAG图,然后我们考虑第一个问题,求最少发几套软件可以全覆盖,首先题意已经保证了是连通的。然后我们可以想,如果我们把所有没有入边的点都放上软件,是一定可行的。有入边的一定会通过一些边最终从一定有出边的发放软件的地方获得软件。然后我们考虑第二个问题:这是一个连通图,如果我们有些点没有入点,有些点没出点,那我们如果想办法将入点和一些出点相连,就能保证最后会成为很多圆相连。这样子答案就是没有入边的点和没有出边的点的最大值。

代码:

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <stack>
using namespace std;
stack<int> dl;
const int maxn = ;
int head[maxn],to[maxn],nxt[maxn],dfn[maxn],low[maxn],ins[maxn],sg[maxn];
int oud[maxn],ind[maxn];
int cnt,n,a,tot,tjs; void ad_edg(int x,int y)
{
nxt[++tjs] = head[x];
head[x] = tjs;
to[tjs] = y;
} void sread()
{
cin>>n;
for (int i = ;i <= n;i++)
{
while ()
{
cin>>a;
if (!a) break;
ad_edg(i,a);
}
}
} void tarjan(int x) //Tarjan算法
{
dfn[x] = low[x] = ++cnt;
dl.push(x),ins[x] = ;
for (int i = head[x];i;i = nxt[i])
{
if (!dfn[to[i]])
{
tarjan(to[i]);
low[x] = min(low[x],low[to[i]]);
}else if (ins[to[i]])
low[x] = min(low[x],dfn[to[i]]); }
if (low[x] == dfn[x])
{
sg[x] = ++tot;
while (dl.top() != x) ins[dl.top()] = ,sg[dl.top()] = tot,dl.pop();
ins[x] = ,dl.pop();
}
} void swork()
{
for (int i = ;i <= n;i++)
if (!dfn[i]) tarjan(i);
for (int i = ;i <= n;i++)
for (int j = head[i];j;j = nxt[j])
if (sg[i] != sg[to[j]])
oud[sg[i]]++,ind[sg[to[j]]]++;
int t1 = ,t2 = ;
for (int i = ;i <= tot;i++)
{
if (!ind[i]) t1++;
if (!oud[i]) t2++;
}
if (tot == )
cout<<""<<endl<<""<<endl;
else
cout<<t1<<endl<<max(t2,t1)<<endl;
} int main()
{
sread();
swork();
return ;
}

POJ1236 Network of Schools【强连通】的更多相关文章

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

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

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

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

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

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

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

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

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

                                                                Network of Schools Time Limit: 1000MS   ...

  6. [IOI1996] USACO Section 5.3 Network of Schools(强连通分量)

    nocow上的题解很好. http://www.nocow.cn/index.php/USACO/schlnet 如何求强连通分量呢?对于此题,可以直接先用floyd,然后再判断. --------- ...

  7. POJ 1236 Network Of Schools (强连通分量缩点求出度为0的和入度为0的分量个数)

    Network of Schools A number of schools are connected to a computer network. Agreements have been dev ...

  8. POJ1236 - Network of Schools tarjan

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

  9. Network of Schools(强连通分量+缩点) (问添加几个点最少点是所有点连接+添加最少边使图强连通)

    Network of Schools Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 13801   Accepted: 55 ...

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

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

随机推荐

  1. 激活win10专业版

    每180天激活一次

  2. 使用nmon进行系统监控

      一.下载并安装: 下载地址:http://nmon.sourceforge.net/pmwiki.php?n=Site.Download 下载版本:nmon16g_x86.tar.gz 不用的Li ...

  3. 读取excel思路

    1.输入地址 2.输入指定的sheet  通过sheet()[]方式指定 3.输入执行的单元位置 通过 .cell_value(x,y)方式指定 示例 data = xlrd.open_workboo ...

  4. git如何拉取指定分支的代码

    问题背景: 新项目还在开发阶段,没有正式对外发布,所以开发同事合并代码到develop上(或者其他名称分支上),而不是到master分支上 通过git拉取代码的时候,默认拉取的是master分支,如下 ...

  5. bzoj 2202 [HNOI2010] Bounce 弹飞绵羊(分块)

    链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2002 思路:和之前那道树分块的题很像,只不过那道是在树上,这道简单些在序列上 还是维护两个数 ...

  6. 搜索Ex

    哎呀好几天没写POI题解了 (>﹏<) 看着摇曳不定的小旗子深深惶恐 打算开始肝洛谷试炼场的提高分区了[对我就是这么菜… 搜索Ex 比暴搜不错得多的题 洛谷P1514 引水入城 拆成两问来 ...

  7. BZOJ 3612: [Heoi2014]平衡

    3612: [Heoi2014]平衡 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 283  Solved: 219[Submit][Status][ ...

  8. [luogu3178][bzoj4034][HAOI2015]树上操作

    题目描述 有一棵点数为 N 的树,以点 1 为根,且树点有边权.然后有 M 个操作,分为三种: 操作 1 :把某个节点 x 的点权增加 a . 操作 2 :把某个节点 x 为根的子树中所有点的点权都增 ...

  9. KMP 模式串匹配 失去匹配的瞬间你还有什么

    KMP: KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt同时发现,因此人们称它为克努特——莫里斯——普拉特操作(简称KMP算法).KMP算法的关键 ...

  10. BCD码(如何转换,转换方式的证明)

    1. 十进制转2421码:小于4不考虑使用最高位,从最高位向最低位依次相减. 如3=2+1,为0011:7=2+4+1,为1101 2. 十进制5211码:按照最高位,次高位,最低位,次低位的顺序依次 ...