题目大意:有N个学校和一些有向边将它们连结,求:

    1.最少需要向几个学校发放软件,使得他们中的每一个学校最终都能够获得软件。

    2.最少需要增加几条有向边使得可以从任意一个学校发放软件,使得每一个学校最终都能够获得软件。

  分析:

    1.缩点以后,找出入度为0的点的个数即可(因为没人可以给他们软件)。

    2.缩点以后,答案即是max(入度为0的点,出度为0的点)。因为只要另每一对入度为0和出度为0的点相连接即可。

  第二个问题也有无向图的版本,那样的话处理方法是:缩点以后,找出那些度为1的点,个数为cnt,向上整除2即可(即答案为(cnt+1)/2)。

  代码如下:

 #include <stdio.h>
#include <stack>
#include <algorithm>
#include <string.h>
#include <vector>
using namespace std; const int N = +; stack<int> S;
int scc_cnt; //强连通分量的个数
int dfs_clock; //访问到该节点的时间戳
int belong[N]; //belong[i]表示i节点所属于第几个强连通分量
int dfn[N]; //表示第i个节点被访问的时间
int low[N]; //表示第i个节点的子节点所能访问到的最小的dfn值
vector<int> G[N];
int in[+],out[+]; void dfs(int u)
{
dfn[u] = low[u] = ++dfs_clock;
S.push(u);
for(int i=;i<G[u].size();i++)
{
int v = G[u][i];
if(!dfn[v])
{
dfs(v);
low[u] = min(low[u],low[v]);
}
else if(!belong[v])
{
low[u] = min(low[u],low[v]);
}
}
if(low[u]==dfn[u])
{
scc_cnt++;
for(;;)
{
int x = S.top();S.pop();
belong[x] = scc_cnt;
if(x==u) break;
}
}
} void scc(int n)
{
memset(dfn,,sizeof(dfn));
memset(belong,,sizeof(belong));
dfs_clock = scc_cnt = ;
for(int i=;i<=n;i++)
{
if(!dfn[i]) dfs(i);
}
} int main()
{
int n;
while(scanf("%d",&n)==)
{
memset(in,,sizeof(in));
memset(out,,sizeof(out));
for(int i=;i<=n;i++) G[i].clear();
for(int i=;i<=n;i++)
{
int to;
while(scanf("%d",&to)==&&to)
{
G[i].push_back(to);
}
} scc(n);
if(scc_cnt==)
{
puts("1\n0");
continue;
}
for(int i=;i<=n;i++)
{
for(int j=;j<G[i].size();j++)
{
int v = G[i][j];
if(belong[i]==belong[v]) continue;
in[belong[v]]++;
out[belong[i]]++;
}
}
int incnt=,outcnt=;
for(int i=;i<=scc_cnt;i++)
{
if(!in[i]) incnt++;
if(!out[i]) outcnt++;
}
printf("%d\n%d\n",incnt,max(incnt,outcnt));
}
return ;
}

POJ 1236 Network of Schools —— (缩点的应用)的更多相关文章

  1. POJ 1236 Network of Schools - 缩点

    POJ 1236 :http://poj.org/problem?id=1236 参考:https://www.cnblogs.com/TnT2333333/p/6875680.html 题意: 有好 ...

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

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

  3. Poj 1236 Network of Schools (Tarjan)

    题目链接: Poj 1236 Network of Schools 题目描述: 有n个学校,学校之间有一些单向的用来发射无线电的线路,当一个学校得到网络可以通过线路向其他学校传输网络,1:至少分配几个 ...

  4. POJ 1236 Network of Schools(强连通分量)

    POJ 1236 Network of Schools 题目链接 题意:题意本质上就是,给定一个有向图,问两个问题 1.从哪几个顶点出发,能走全全部点 2.最少连几条边,使得图强连通 思路: #inc ...

  5. poj 1236 Network of Schools(又是强连通分量+缩点)

    http://poj.org/problem?id=1236 Network of Schools Time Limit: 1000MS   Memory Limit: 10000K Total Su ...

  6. poj 1236 Network of Schools(连通图入度,出度为0)

    http://poj.org/problem?id=1236 Network of Schools Time Limit: 1000MS   Memory Limit: 10000K Total Su ...

  7. [tarjan] poj 1236 Network of Schools

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

  8. POJ 1236 Network of Schools(Tarjan缩点)

    Network of Schools Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 16806   Accepted: 66 ...

  9. poj 1236 Network of Schools(tarjan+缩点)

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

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

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

随机推荐

  1. MyBatis 源码篇-资源加载

    本章主要描述 MyBatis 资源加载模块中的 ClassLoaderWrapper 类和 Java 加载配置文件的三种方式. ClassLoaderWrapper 上一章的案例,使用 org.apa ...

  2. [Tarjan系列] Tarjan算法求无向图的桥和割点

    RobertTarjan真的是一个传说级的大人物. 他发明的LCT,SplayTree这些数据结构真的给我带来了诸多便利,各种动态图论题都可以用LCT解决. 而且,Tarjan并不只发明了LCT,他对 ...

  3. MVC和WebApi中设置Area中的页为首页

    拿WebApi为例,我们一般会生成一份帮助文档,帮助文档会在Area中 我们现在要讲帮助文档设为首页 只需在App_Start文件夹下添加 RouteConfig 类 public class Rou ...

  4. java八大排序代码

    import java.util.ArrayList;import java.util.List; public class FastSort { public static void main(St ...

  5. arcgis 服务网页打开需要输入用户名和密码问题解决

    解决方法: 在站点manager中,检查服务的安全性,确认是否是公共.如果不是,设置为公共,面向任何人:如果服务已经被设置为面向公共,那么先设置为私有,面向所选用户,然后再设置为公共,面向任何人 如果 ...

  6. asp.net core 中hangfire面板的配置及使用

    1.定义校验授权类DyDashboardAuthorizationFilter /// <summary> /// Hangfire仪表盘配置授权 /// </summary> ...

  7. scroll滚动条掩藏

    掩藏scroll滚动条::-webkit-scrollbar ::-webkit-scrollbar {} /* 1 */ ::-webkit-scrollbar-button {} /* 2 */ ...

  8. 转载:Web安全X-FRAME-OPTIONS 出现两个或多个的原因

    转载:https://blog.csdn.net/Teemo_2016/article/details/82051523 在配置文件中配置了 <httpProtocol>     < ...

  9. K2 BPM_K2受邀出席SAP研讨会:共话“智能+”时代下的赋能与转型_全业务流程管理专家

    ​ 3月5日,第十三届全国人大二次会议在北京召开.政府工作报告首次出现“智能+”,并明确指出2019年,要打造工业互联网平台,拓展“智能+”,为制造业转型升级赋能.从政府工作报告中不难看出,“智能+” ...

  10. Java基础加强-内部类及代理

    /*内部类是一个编译时的概念,*/ 常规内部类.静态内部类.局部内部类.匿名内部类 1.常规内部类(常规内部类没有static修饰且定义在外部类类体中) 1.常规内部类中的方法可以直接使用外部类的实例 ...