NYOJ 120 校园网络

校园网络

时间限制:3000 ms  |  内存限制:65535 KB

难度:5

描述

南阳理工学院共有M个系,分别编号1~M,其中各个系之间达成有一定的协议,如果某系有新软件可用时,该系将允许一些其它的系复制并使用该软件。但该允许关系是单向的,即:A系允许B系使用A的软件时,B未必一定允许A使用B的软件。

现在,请你写一个程序,根据各个系之间达成的协议情况,计算出最少需要添加多少个两系之间的这种允许关系,才能使任何一个系有软件使用的时候,其它所有系也都有软件可用。

输入
第一行输入一个整数T,表示测试数据的组数(T<10)
每组测试数据的第一行是一个整数M,表示共有M个系(2<=M<=100)。
随后的M行,每行都有一些整数,其中的第i行表示系i允许这几个系复制并使用系i的软件。每行结尾都是一个0,表示本行输入结束。如果某个系不允许其它任何系使用该系软件,则本行只有一个0.
输出
对于每组测试数据,输出最少需要添加的这种允许关系的个数。
样例输入
1
5
2 4 3 0
4 5 0
0
0
1 0
样例输出
2
来源
POJ改编
上传者
张云聪
解题:强连通算法+缩点。然后看缩点后的图,某点入度为0,加1,如果出度为0 再加1.

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <cstdlib>
 5 #include <vector>
 6 #include <climits>
 7 #include <algorithm>
 8 #include <cmath>
 9 #include <stack>
10 #define LL long long
11 #define INF 0x3f3f3f
12 using namespace std;
13 const int maxn = 110;
14 vector<int>g[maxn],mp[maxn];
15 stack<int>s;
16 int low[maxn],dfn[maxn],belong[maxn],iindex;
17 bool instack[maxn],in[maxn],out[maxn];
18 int scc,n;
19 void tarjan(int u) {
20     dfn[u] = low[u] = ++iindex;
21     instack[u] = true;
22     s.push(u);
23     int v;
24     for(int i = 0; i < g[u].size(); i++) {
25         v = g[u][i];
26         if(!dfn[v]) {
27             tarjan(v);
28             low[u] = min(low[u],low[v]);
29         } else if(instack[v] && low[u] > dfn[v]) low[u] = dfn[v];
30     }
31     if(low[u] == dfn[u]) {
32         scc++;
33         do {
34             v = s.top();
35             instack[v] = false;
36             belong[v] = scc;
37             s.pop();
38         } while(v != u);
39     }
40
41 }
42 int main() {
43     int t,i,j,u,v,ans;
44     scanf("%d",&t);
45     while(t--) {
46         scanf("%d",&n);
47         for(i = 0; i <= n; i++) {
48             g[i].clear();
49             low[i] = dfn[i] = 0;
50             instack[i] = false;
51             mp[i].clear();
52         }
53         for(i = 1; i <= n; i++) {
54             while(scanf("%d",&v)&&v) {
55                 g[i].push_back(v);
56             }
57         }
58         while(!s.empty()) s.pop();
59         ans = scc = iindex = 0;
60         for(i = 1; i <= n; i++)
61             if(dfn[i]) tarjan(i);
62         for(i = 1; i <= n; i++) {
63             for(j = 0; j < g[i].size(); j++) {
64                 if(belong[i] != belong[g[i][j]]) {
65                     mp[belong[i]].push_back(belong[g[i][j]]);
66                 }
67             }
68         }
69         ans = 0;
70         memset(in,false,sizeof(in));
71         memset(out,false,sizeof(out));
72         for(i = 1; i <= n; i++) {
73             for(j = 0; j < g[i].size(); j++) {
74                 out[i] = true;
75                 in[g[i][j]] = true;
76             }
77         }
78         for(i = 1; i <= n; i++) {
79             if(!in[i]) ans++;
80             if(!out[i]) ans++;
81         }
82         printf("%d\n",ans);
83     }
84     return 0;
85 }

 

NYOJ 120 校园网络

时间: 2024-10-23 22:36:03

NYOJ 120 校园网络的相关文章

NYOJ 641 摧毁网络

摧毁网络 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 告诉你一个惊天的秘密,其实吧,小蜗牛是一个高级特工.他拥有特工的应该有所有本领.现在他来到了一个小镇,他的任务就是要切断一个恐怖组织的整个通信网络.但是恐怖分子没有想象中的那么白痴,恐怖分子把自己的网络混杂在了民用的网络中,现在小蜗牛必须弄清楚到底有多少的网络,才可以采取必要的行动.从组织那他拿到了小镇的网络分布地图,每户居民都有固定的编号. 输入 输入有多组. 每组数据的第一行都给一个N(0<=N<=10

校园网络(模拟)

校园网络 时间限制:3000 ms  |  内存限制:65535 KB 难度:5 描述 南阳理工学院共有M个系,分别编号1~M,其中各个系之间达成有一定的协议,如果某系有新软件可用时,该系将允许一些其它的系复制并使用该软件.但该允许关系是单向的,即:A系允许B系使用A的软件时,B未必一定允许A使用B的软件. 现在,请你写一个程序,根据各个系之间达成的协议情况,计算出最少需要添加多少个两系之间的这种允许关系,才能使任何一个系有软件使用的时候,其它所有系也都有软件可用. 输入 第一行输入一个整数T,

校园网络TV云平台

一.校园网络TV云平台 "校园网络TV云平台"是深圳矽伟智(sewise)基于"流媒体云技术"面向高校推出的一套'视频校园'网络TV门户网站资源共享平台应用方案,把高校原有的一些视频教学资源.教育行业网络电台音视频文件信息与流媒体软件服务器进行二次开发和全新的规划,通过后期的整合,以视频校园全媒体网络平台统一推送到在校学生的手机.PC.PAD.TV等端口.在校园网络公开课程板块中,老师可以录播网络课程进行在线直播和点播.学生可以自由选择和学习自己喜欢的线上课程.在校

NYOJ-120 校园网络 &amp;&amp;POJ 1236 (强连通缩点targan算法)

链接:click here 题意: 校园网络 时间限制:3000 ms  |  内存限制:65535 KB 难度:5 描述 南阳理工学院共有M个系,分别编号1~M,其中各个系之间达成有一定的协议,如果某系有新软件可用时,该系将允许一些其它的系复制并使用该软件.但该允许关系是单向的,即:A系允许B系使用A的软件时,B未必一定允许A使用B的软件. 现在,请你写一个程序,根据各个系之间达成的协议情况,计算出最少需要添加多少个两系之间的这种允许关系,才能使任何一个系有软件使用的时候,其它所有系也都有软件

OJ 1234 校园网络

        From easthong ☆校园网络                 描述 Description     一些学校连入一个电脑网络.那些学校已订立了协议:每个学校都会给其它的一些学校分发软件(称作"接受学校").注意如果 B 在 A 学校的分发列表中,那么 A 不必也在 B 学校的列表中. 你要写一个程序计算,根据协议,为了让网络中所有的学校都用上新软件,必须接受新软件副本的最少学校数目(子任务 A).更进一步,我们想要确定通过给任意一个学校发送新软件,这个软件就会

某中学校园网络建设过程中虚拟化的实施(一)

前两天我刚完成了XX中学的校园网改造项目,改造前的学校网络中心机房内部破乱不堪,静电地板脱皮破损严重,UPS使用5年以上已经电量不足,机柜老化,核心交换机S5750满足不了日益增加的业务量,所使用的服务器都是老式的台式电脑,出口网关使用的是软路由,校园内部的终端接入是百兆. 这次校园网改造涉及到数据机房建设.智分+无线系统.多功能出口网关.VPN.服务器虚拟化.VDP.P2V.云教室等技术.我们首先对机房进行扩容增大机房面积,对机房进行重新装修,增加防静电防尘,接地防雷,增加一套UPS系统.更换

校园网络电视台直播搭建方案

客户的需求: 我们是想建立校园电视台.有四路信号,两个摄像机,一个电视信号从机顶盒出来,还有就是笔记本HDMI输出,进行多机位切换画面后只一路输出到流媒体系统.观看端主要是PC和手机微信里进行观看. 并发不大前期大概100左右.需要录制每次2个小时左右. 客户关注点: 1.       流媒体直播系统是否支持Linux平台安装. 2.       是否有P2P功能,可以节省带宽. 3.       是否是Flash 技术,观看者可以无需安装插件. 4.       是否能嵌入手机微信进行观看.

某中学校园网络建设过程中虚拟化的实施(二)

(接上期)接着我使用笔记本电脑连接网络中用于和服务器通信,我使用vsphere client工具连接ESXI主机,对主机进行基本设置. 进入ESXI主机后,我们看到的主页界面 我首先按步骤添加主机上的本地存储(建立的RAID5的VD1)4T 第二块存储添加完成后,我在存储上添加个ISO文件夹,上传我们安装系统所需的ISO文件 然后查看我们主机网络连接情况,把vmnic1从待机上移到活动状态,组合成双网卡链路. 接着我们对主机配置――时间配置――属性――选项――NTP设置,添加NTP主机,勾选NT

NYOJ 199 无线网络覆盖【简单题】

大一的时候不敢写这题,今晚看了一下,感觉挺简单的,顺着思路下下来 就可以了,数学题,将数据化简一下就可以了 无线网络覆盖 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 我们的乐乐同学对于网络可算得上是情有独钟,他有一个计划,那就是用无线网覆盖郑州大学. 现在学校给了他一个机会,因此他要购买很多的无线路由.现在他正在部署某条大道的网络,而学校只允许把他的无线路由器放在路的正中间.我们默认这条大道是笔直的并且它在任何地方的宽度都一样.并且所有的路由器的覆盖面积是相同的