思路:使用tarjan求强连通分量并进行缩点,判断所有入度为0的点,这个点就是必须要给予文件的点,分别计算出度,入度为零的点的个数,取二者的最大值就是把这个图变成强连通需要加的边数。

一个取值需要讨论,当这个图就是强连通图的时候,答案输出1和0.

  个人经历:作为初学者这个题错了很多遍,学姐给我们讲的在某个点已经被访问过的时候low值是否更新的问题,使用的是id的判断方法,只有当id为零的时候才能更新low值,这个现在我是理解的,但当时因为错误太多看别人的代码时,看到了是否在栈中的记录方式,当时我和然然大神就方了,以为是这个题需要特别判定,但后来经过一番讨论,发现这种记录方式跟id的效果是一样的,这个证明我就不给出了,自己画一个有两个强连通分量且这两个分量有一条边相连的图就可以了,个人感觉id的效果更好,它节省了空间,但是我这里还是给出栈判别方式的代码,毕竟还是要知道这种办法是怎么回事的嘛。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<stack>
using namespace std;
#define maxn 111
stack<int> s;
int dfn[maxn],low[maxn],id[maxn],out[maxn],in[maxn];
int tot,sum,maps[maxn][maxn],n;
void tarjan(int u)
{
dfn[u] = low[u] = ++tot;
s.push(u);
for(int i = ; i <= n; i++)
{
if(!maps[u][i]) continue;
int vv = i;
if(!dfn[vv])
{
tarjan(vv);
low[u] = min(low[vv],low[u]);
}
else if(id[vv] == ) low[u] = min(low[u],dfn[vv]);
}
if(low[u] == dfn[u])
{
sum++;
while(!s.empty())
{
int num = s.top();
s.pop();
id[num] = sum;
if(num == u)
break;
}
}
return;
}
void init()
{
tot = ,sum = ;
memset(low,,sizeof(low));
memset(dfn,,sizeof(dfn));
memset(id,,sizeof(id));
while(!s.empty()) s.pop();
memset(in,,sizeof(in));
memset(out,,sizeof(out));
memset(maps,,sizeof(maps));
}
int main()
{
int y;
while(cin >> n)
{
init();
for(int i = ; i <= n; i++)
{
while(cin >> y)
{
if(!y) break;
maps[i][y] = ;
}
}
for(int i = ; i <= n; i++)
{
if(!dfn[i]) tarjan(i);
}
for(int i = ; i <= n; i++)
{
for(int j = ; j <= n; j++)
{
if(!maps[i][j]) continue;
if(id[i] != id[j])
{
out[id[i]]++;
in[id[j]]++;
}
}
}
int ans1 = ;
for(int i = ; i <= sum; i++)
{
if(!in[i]) ans1++;
}
if(sum == ) ans1 = ;
int num1 = ,num2 = ;
for(int i = ; i <= sum; i++)
{
if(!in[i]) num1++;
if(!out[i]) num2++;
}
int ans2 = max(num1,num2);
if(sum == ) ans2 = ;
cout<<ans1<<endl;
cout<<ans2<<endl;
}
return ;
}

POJ 1236 Network of Schools (tarjan算法+缩点)的更多相关文章

  1. Poj 1236 Network of Schools (Tarjan)

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

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

    Network of Schools Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 12240   Accepted: 48 ...

  3. POJ 1236 Network of Schools Tarjan缩点

    Network of Schools Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 22729   Accepted: 89 ...

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

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

  5. POJ 1236 Network of Schools (强连通分量缩点求度数)

    题意: 求一个有向图中: (1)要选几个点才能把的点走遍 (2)要添加多少条边使得整个图强联通 分析: 对于问题1, 我们只要求出缩点后的图有多少个入度为0的scc就好, 因为有入度的scc可以从其他 ...

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

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

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

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

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

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

  9. [tarjan] poj 1236 Network of Schools

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

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

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

随机推荐

  1. 有关app的一些小知识

    META相关 1. 添加到主屏后的标题(IOS)<meta name="apple-mobile-web-app-title" content="标题"& ...

  2. SharePoint 2013 图文开发系列之列表定义高级篇

    转载自  http://www.cnblogs.com/jianyus/p/3484714.html SharePoint列表库,是我们使用过程中最常用的库,下面,我们简单介绍下代码定义自定义列表,主 ...

  3. IE/Chrome背景图片居中1px偏移解决方法

    最近在支持行业运营的一个推广页面,遇到了非常规的页面banner图居中的问题,为了解决此问题,做了简单的测试,做了一个小结,为经常做大促页面的兄弟姐妹们提供参考解决方案. 首先来看看现象.最经典的页面 ...

  4. 关于 HIVE Beeline 问题

    1  启动 hiveserver2 服务,启动 beeline -u jdbc:hive2:// 正常 ,启动 beeline -u jdbc:hive2://127.0.0.1:10000 包如下错 ...

  5. 关于oracle数据库(8)查询2

    筛选数据,直接加where条件,并且and,或者or 使用rownum获取前N条数据 select * from 表名 where rownum <= 数字; 如:获取前5条数据 select ...

  6. 【洛谷P1352】没有上司的舞会

    [洛谷P1352]没有上司的舞会 x舷售 锚」翅θ 但是 拙臃 蓄ⅶ榔 暄条熨卫 翘ヴ馇 表现无愧于雪月工作室的核心管理 爸惚扎掬 颇瓶 芟缆肝 貌痉了 洵┭笫装 嗝◇裴腋 褓劂埭 ...

  7. 运行指定路径下的exe

    public void StartProcess(string name) { string exeFileName = "DataControl.exe"; string sta ...

  8. Silverlight中以客户端加载另一项目客户端(先登录后加载的一般实现)

    近几日,本人在对一个老的Silverlight的GIS项目进行维护,发现该项目的实现是先把所有的资源加载至客户端,其中包括登录部分和业务实现部分,我就在想可不可以把登录部分和业务实现部分开来.如果用户 ...

  9. Sql sever 常用语句(续)

    distintct:  查询结果排除了重复项(合并算一项)--如查姓名 select distinct ReaName from  UserInfo 分页语句:(查询区间时候应该查询出行号,作为分页的 ...

  10. html5学习(二)音频audio

    音频格式 当前,audio 元素支持三种音频格式:   IE 9 Firefox 3.5 Opera 10.5 Chrome 3.0 Safari 3.0 Ogg Vorbis   √ √ √   M ...