题目描述:有一些学校连接到一个计算机网络。这些学校之间达成了一个协议:每个学校维护着一个学校列表,它向学校列表中的学校发布软件。注意,如果学校B在学校A的列表中,则A不一定在B的列表中。任务A:计算为使得每个学校都能通过网络收到软件,你至少需要准备多少份软件拷贝。任务B:考虑一个更长远的任务,想确保给任意一个学校发放一个新的软件拷贝,该软件拷贝能发布到网络中的每个学校。为了达到这个目标,必须在列表中增加新成员。计算需要添加新成员的最小数目。// 任务A就是求缩点后 入度为0的点的个数

// 任务B 就是让缩点后的图中出度或入度为0的点消失 那么只要出度为0的点和入度为0的点连 主要看哪种点多就是了#include <iostream>
#include <algorithm>
#include <queue>
#include <stack>
#include <math.h>
#include <stdio.h>
#include <string.h>
using namespace std;
#define MOD 1000000007
#define maxn 60100
#define maxm 10010
struct Edge{int to;int next;Edge(){};Edge(int u,int v){to=u;next=v;}
}E[maxn];
stack<int> S;
int V[maxm],num;
int belong[maxm];
int pre[maxm];
int dfst,scc;
int ans;
bool tag[maxm];
int in[maxm],out[maxm];
void init(int n){dfst=scc=0;num=0;ans=0;while(!S.empty())S.pop();for(int i=1;i<=n;i++){V[i]=-1;pre[i]=0;belong[i]=0;}
}
void add(int u,int v){E[num].to=v;E[num].next=V[u];V[u]=num++;
}
int tarjan(int u){int lowu=pre[u]=++dfst;int v,e;S.push(u);for(e=V[u];e!=-1;e=E[e].next){v=E[e].to;if(!pre[v]){int lowv=tarjan(v);lowu=min(lowu,lowv);}else if(!belong[v]) lowu=min(lowu,pre[v]);}if(lowu==pre[u]){scc++;for(;;){int x=S.top();S.pop();belong[x]=scc;if(x==u) break;}}return lowu;
}
int main()
{int n,m,T;int u,v;int i,j=1;//scanf("%d",&T);while(scanf("%d",&n)!=EOF){// scanf("%d",&m);
        init(n);for(i=1;i<=n;i++){u=i;while(scanf("%d",&v),v){add(u,v);}}for(i=1;i<=n;i++)if(!pre[i]) tarjan(i);// for(i=1;i<=n;i++) printf("%d ",belong[i]);for(i=1;i<=scc;i++) out[i]=0,in[i]=0;int e,u,v;for(i=1;i<=n;i++){for(e=V[i];e!=-1;e=E[e].next){u=belong[i];v=belong[E[e].to];if(u!=v){in[v]++;out[u]++;//,printf("v=%d ",v);}                       }}int A=0,B=0;for(i=1;i<=scc;i++){if(!in[i]) A++;if(!out[i]) B++;}B=max(A,B);if(scc==1) B=0;// 特殊情况下 只有一个强连通分量 郁闷开始这里写成了nprintf("%d\n%d\n",A,B);}return 0;
}

转载于:https://www.cnblogs.com/372465774y/p/3205747.html

poj 1236 Network of Schools相关推荐

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

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

  2. [tarjan] poj 1236 Network of Schools

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

  3. POJ 1236 Network of Schools(tarjan)

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

  4. POJ - 1236 Network of Schools

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

  5. POJ 1236 Network of Schools(强连通分量缩点求根节点和叶子节点的个数)

    Description: A number of schools are connected to a computer network. Agreements have been developed ...

  6. poj 1236 Network of Schools (强连通分支缩点)

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

  7. POJ - 1236 Network of Schools(强连通缩点)

    题目链接:点击查看 题目大意:一个学校连接在一个计算机网络上,学校之间存在软件支援协议,每个学校都有它应支援的学校名单(学校A支援学校B,并不表示学校B一定支援学校A).当某校获得一个新软件时,无论是 ...

  8. poj 1236 Network of Schools

    强联通分量模版题,tarjan算法: 1 #include<stdio.h> 2 #include<string.h> 3 #define MAXN 110 4 5 int n ...

  9. pku 1236 Network of Schools (tarjan缩点)

    http://poj.org/problem?id=1236 N(2<N<100)各学校之间有单向的网络,每个学校得到一套软件后,可以通过单向网络向周边的学校传输,问题1:初始至少需要向多 ...

最新文章

  1. hdu4544 优先队列(小贪心)
  2. Jenkins中安装Role-based Authorization Strategy插件来实现用户角色权限管理
  3. varnish缓存服务器构建疑问
  4. XCTF-高手进阶区:Web_php_include
  5. python怎么显示汉字_mac在matplotlib中显示中文的操作方法
  6. 程序人生:教你写出让同事抓狂的代码
  7. 洛谷P3327:[SDOI2015]约数个数和(莫比乌斯反演)
  8. 计算机跨专业专插本学音乐,欢迎投稿丨专插本可以跨专业考,只要肯坚持!
  9. Cream Finance关于提高三个v2 yVaults的质押系数的提案已经完成
  10. codeforces 707D-(DFS+bitset)
  11. 读取jar包所在目录和jar包内文件
  12. Leader安排的三小时工作量,我如何用python十秒完成
  13. Ubuntun 18.04 NVIDIA显卡驱动安装
  14. 调整外接显示屏亮度的方法
  15. 2022年乡村医生考试精选模拟题及答案
  16. Linux 下 github 的使用
  17. echarts中国地图线性流动动画js特效
  18. java中如何添加画板背景图,在AI中怎么把已知图片在新建画板时候作为画板的背景来建立画板啊!...
  19. EIGRP特点包括:
  20. 银光类似web visio的节点连线控件Essential Diagram免费下载地址

热门文章

  1. (一)为什么你应该(从现在开始就)写博客
  2. 计算机游戏的英文单词,关于游戏的英语词汇
  3. 服务器如何运行java文件_在linux服务器上运行java文件
  4. zblog php标签,201502200101 zblogphp调整“显示常用标签”个数方法
  5. java 委托_动态代理:Java开发必学
  6. maven使用小技巧 optional
  7. 开发好还是实施好_公众号开发 选择模板好还是选择定制发好
  8. 至暗时刻鸿蒙初开,鸿蒙2.0面世,华为在“至暗时刻”迎来曙光
  9. JAVA用多线程反而变慢了_Java中使用多线程不能明显提高程序效率的一些原因
  10. 依赖注入Dagger2详解