COGS 908 校园网
/*
Tarjan缩点之后
强联通分量建图 统计每个强联通分量的出入度
第一问就是入度为0的 强联通分量的个数
第二问 为了高效的使每个强联通分量都有出入度
要把出度为零的强联通分量连到入度为零的点上 这样得到的边数是最少的
ans2并不是桥的数目 这样不是最少.....
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#define maxn 110
#define maxm 10010
using namespace std;
int n,num,g[maxn][maxn],head[maxn],sum,tot,belong[maxn];
int dfn[maxn],low[maxn],stack[maxm],top,f[maxn],ans1,ans2;
int chu[maxn],ru[maxn];
struct node
{
int u,v,pre;
}e[maxm];
struct Node
{
int c[maxn];
int size;
}ans[maxn];
int init()
{
int x=;char s;bool f=;s=getchar();
while(s<''||s>''){if(s=='-')f=;s=getchar();}
while(s>=''&&s<=''){x=x*+s-'';s=getchar();}
if(f)return -x;return x;
}
void Add(int from,int to)
{
num++;
e[num].u=from;
e[num].v=to;
e[num].pre=head[from];
head[from]=num;
}
void Tarjan(int s)
{
dfn[s]=low[s]=++tot;
stack[++top]=s;
f[s]=;
for(int i=head[s];i;i=e[i].pre)
{
if(!dfn[e[i].v])
{
Tarjan(e[i].v);
low[s]=min(low[s],low[e[i].v]);
}
else if(f[e[i].v])
low[s]=min(low[s],dfn[e[i].v]);
}
if(dfn[s]==low[s])
{
sum++;
while(s!=stack[top])
{
ans[sum].size++;
belong[stack[top]]=sum;
ans[sum].c[ans[sum].size]=stack[top];
f[stack[top]]=;
top--;
}
ans[sum].size++;
belong[stack[top]]=sum;
ans[sum].c[ans[sum].size]=stack[top];
f[stack[top]]=;
top--;
}
}
int main()
{
//freopen("schlnet.in","r",stdin);
//freopen("schlnet.out","w",stdout);
n=init();
int x;
for(int i=;i<=n;i++)
while()
{
x=init();
if(x==)break;
Add(i,x);
}
for(int i=;i<=n;i++)
if(!dfn[i])
Tarjan(i);
for(int i=;i<=n;i++)
{
for(int j=head[i];j;j=e[j].pre)
{
if(belong[i]!=belong[e[j].v])
{
if(g[belong[i]][belong[e[j].v]]==)
{
chu[belong[i]]++;
ru[belong[e[j].v]]++;
}
g[belong[i]][belong[e[j].v]]=;
}
}
}
for(int i=;i<=sum;i++)
{
if(ru[i]==)ans1++;
if(chu[i]==)ans2++;
}
if(sum==)
{
printf("1\n0\n");
return ;
}
printf("%d\n%d\n",ans1,max(ans1,ans2));
return ;
}
COGS 908 校园网的更多相关文章
- cogs——908. 校园网
908. 校园网 ★★ 输入文件:schlnet.in 输出文件:schlnet.out 简单对比 时间限制:1 s 内存限制:128 MB USACO/schlnet(译 by Fe ...
- tarjan算法+缩点--cojs 908. 校园网
cojs 908. 校园网 ★★ 输入文件:schlnet.in 输出文件:schlnet.out 简单对比时间限制:1 s 内存限制:128 MB USACO/schlnet(译 b ...
- COGS——C 908. 校园网 || 洛谷——P 2746 [USACO5.3]校园网Network of Schools
http://www.cogs.pro/cogs/problem/problem.php?pid=908 || https://www.luogu.org/problem/show?pid=27 ...
- cogs908. 校园网
908. 校园网 ★★ 输入文件:schlnet.in 输出文件:schlnet.out 简单对比时间限制:1 s 内存限制:128 MB USACO/schlnet(译 by Fel ...
- 锐捷linux客户端常用命令(主要用来连接校园网或公司局域网)
锐捷访问校园网,.sh脚本文件rjsu*.sh-u 用户名-P 密码-S 参数1保存密码参数0不保存密码 其实: 直接使用md5认证方式输入用户名密码并且配置好ip之后,重新打开网卡即可有一定 ...
- 配置VMware虚拟机用绕过校园网达到无线上网配置方法
因为平时要用到Vmware这样的工具上虚拟机上网, 但是本人是学生狗,学生狗在学校就要面对大学毒瘤软件--锐捷,而锐捷是不允许有虚拟网卡的存在的,所以上网只能用wifi上.之前试了很久,反正是怎么开都 ...
- [机器学习] Ubuntu 软件源更新(校园网)以及问题总结
最近在折腾Linux,在校园网下怎么能够很好的获取软件很是让我头疼啊~~~ 总结一下吧!!! 首先是校园网的源地址: 清华大学:https://mirrors.tuna.tsinghua.edu.cn ...
- 绕过校园网的共享限制 win10搭建VPN服务器实现--从入门到放弃
一.开篇立论= =.. 上次说到博主在电脑上搭建了代理服务器来绕过天翼客户端的共享限制,然而经过实际测试还不够完美,所以本着生命不息,折腾不止的精神,我又开始研究搭建vpn服务器= =... (上次的 ...
- 【COGS 254】【POI 2001】交通网络图
http://www.cogs.top/cogs/problem/problem.php?pid=254 dist[i]表示能最早到达i点的时间.这样就可以用最短路模型来转移了. #include&l ...
随机推荐
- Python 环境
文章出处:http://www.cnblogs.com/winstic/,请保留此连接 总结一下自己使用python过程中安装三方包的方法 Python 安装 Python的安装非常简单,本人使用的w ...
- 常用排序算法集合-C实现
之前熟悉C的时候写着玩的,就当做笔记用吧: #include<stdio.h> #include<stdlib.h> #include<string.h> #inc ...
- Object-C非正式协议与正式协议的区别
Object-C非正式协议与正式协议的区别 这两个概念困扰我很久了,一直都很像搞清楚到非正式协议和正式协议有什么区别和联系,下面结合网上的资料和自己的看法谈谈这个问题. 一.非正式协议 显然这个名词是 ...
- Java中的多线程总结(转)
1.多线程概述 当一个程序运行时,内部可能包含了多个顺序执行流,每个顺序执行流就是一个线程.主要以下几个优点: 线程之间很容易实现共享内存 创建线程代价较小 Java语言内置多线程功能支持 2.线 ...
- [BZOJ 2165] 大楼 【DP + 倍增 + 二进制】
题目链接:BZOJ - 2165 题目分析: 这道题我读了题之后就想不出来怎么做,题解也找不到,于是就请教了黄学长,黄学长立刻秒掉了这道题,然后我再看他的题解才写出来..Orz 使用 DP + 倍增 ...
- linux vi查找命令
linux vi查找命令 div id="article_content" class="article_content"> 使用vi编辑器编辑长文 ...
- hdu 5135 Little Zu Chongzhi's Triangles
http://acm.hdu.edu.cn/showproblem.php?pid=5135 题意:给你N个木棍的长度,然后让你组成三角形,问你组成的三角形的和最大是多少? 思路:先求出可以组成的所有 ...
- h.264直接预测
直接预测是B帧上一种独有的预测方式,其中直接预测又分为两种模式: 时域直接模式(temporal direct).空域直接模式(spatial direct). 在分析这两种模式之前,有一个前提概念需 ...
- Lucky and Good Months by Gregorian Calendar(模拟)
http://poj.org/problem?id=3393 好大的一道模拟题,直接当阅读理解看了.下面是大神写的题意,解释的好详细. 定义: Goog month : 该月第一个工作日为星期一的月份 ...
- 扩展KMP模板
注意:需要用特殊符号隔开 1 struct ExKmp{ void Init(){ memset(f,,sizeof(f)); memset(r,,sizeof(r)); } void Get_Fai ...