唉= =这道题我都想到了tarjan缩点,但是没有想到最后一步啊= =我们很容易想到反向建边然后缩点,这时候我们看由多少个联通块的入度为0,如果为1个,那就输出这个块的大小,否则输出0;

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; const int maxn = 10010;
const int maxe = 50010; struct edge {
int t;
edge* next;
}e[maxe * 2], *head[maxn]; int ne = 0; int n, m; void addedge(int f, int t) {
e[ne].t = t, e[ne].next = head[f]; head[f] = e + ne ++;
} void read() {
scanf("%d%d", &n, &m);
for(int i = 1; i <= m; ++ i) {
int u, v;
scanf("%d%d", &u, &v);
addedge(v, u);
}
} int dfs[maxn], back[maxn];
int s[maxn], top = 0, Index = 0;
bool vis[maxn]; int num = 0;
int size[maxn];
int belong[maxn]; void tarjan(int now) {
dfs[now] = back[now] = ++ Index; vis[now] = true;
s[++ top] = now;
for(edge* p = head[now]; p; p = p-> next) {
if(!dfs[p-> t]) tarjan(p-> t), back[now] = min(back[now], back[p-> t]);
else if(vis[p-> t] && back[now] > dfs[p-> t]) {
back[now] = dfs[p-> t];
}
}
if(dfs[now] == back[now]) {
++ num;
while(1) {
belong[s[top]] = num;
size[num] ++;
vis[s[top]] = false;
if(s[top] == now) break;
top --;
}
top --;
}
} int f[maxn]; int in[maxn];
bool have[maxn]; void sov() {
memset(vis, false, sizeof(false));
memset(size, 0, sizeof(size));
memset(have, 0, sizeof(have));
for(int i = 1; i <= n; ++ i) {
if(!dfs[i]) tarjan(i);
}
memset(in, 0, sizeof(in));
int tol = 0;
for(int i = 1; i <= n; ++ i) {
for(edge* p = head[i]; p; p = p-> next) {
if(belong[p-> t] != belong[i]) {
in[belong[p-> t]] ++;
}
}
}
int pos = 0;
for(int i = 1; i <= num; ++ i) {
if(in[i] == 0) tol ++, pos = i;
}
if(tol == 1) printf("%d\n", size[pos]);
else printf("0\n");
} int main() {
//freopen("test.in", "r", stdin);
read(); sov();
return 0;
}

好久没写题解了= =这次是bzoj 1051的更多相关文章

  1. 好久没写原生的PHP调用数据库代码了分享个

    好久没写原生的PHP代码调用数据库了 eader("Content-type: text/html; charset=utf-8"); $time=$symptoms=$attr= ...

  2. 好久没写Blog了

    上一年的经历: <炸年兽>搞了一阵后,美术去创业了.. 和另一个美术断断续续,做了个<斗战圣佛>,挺山寨的,都没敢跟别人说. 不管怎么说也算是自己上了一个appStore的游戏 ...

  3. 利用border和伪类画出三角形 ps:好久没写博客了。。。

    有一个半月没有写博客了,这段时间,小哥我经历了自入行前端最为黑暗的时期,迷茫,空虚,不想写代码,不想做研究了.连打游戏都没有兴趣,如同行尸走肉一般.还好,毕业论文的初稿完成后,整个时间段最恶心最难熬的 ...

  4. 好久没写作业了,因为组里分配了任务,学习了Resnet和DenseNet,把概要po上来和大家分享。

    Res: 学长说,不要看别人的博客.看多了就看傻了!俗话说,不听老人言,吃亏在眼前. 第一篇论文来咯!Deep Residual Learning for Image Recognition!国人写的 ...

  5. c++设计模式总结 好久没写博客了 实在是忙

    具体代码就不贴出来了   通俗易懂的理解方式      原创 c++设计模式: 简单工厂模式 工厂模式有一种非常形象的描述,建立对象的类就如一个工厂,而需要被建立的对象就是一个个产品:在工厂中加工产品 ...

  6. python io 模块之 open() 方法(好久没写博客了)

    io.open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True),打开file ...

  7. 好久没写blog了 ~ 换了个城市,换了个公司,各种忙碌

    最近一直在忙工作交接以及换城市.入职的事情 ~~~ 新公司做C++的比较少,so全上C++11了,写代码各种爽. 最近应该会写一点关于QT的blog , 学到新知识了哈.

  8. 好久好久没写,,百度API逆地址解析以及删除指定marker

    百度地图Api中 除覆盖物有两个方法:map.removeOverlay()或者 map.clearOverlays(),其中 clearOverlays()方法一次移除所有的覆盖物removeOve ...

  9. 好久没写了,SQLSERVER服务丢失后怎么办

    服务器突然中了病毒,查杀后,结果两个服务也丢了, 从其他机器上COPY了两个EXE过来,编写这两个服务就搞定了,不用重装MSSQL2005了 sc create MSSQLSERVER binpath ...

随机推荐

  1. vue之ref

    ref 被用来给元素或子组件注册引用信息.引用信息将会注册在父组件的 $refs 对象上.如果在普通的 DOM 元素上使用,引用指向的就是 DOM 元素:如果用在子组件上,引用就指向组件. 1.ref ...

  2. python入门学习一

    本文用来记录学习python过程中所遇到的不同的或者记忆不清的一些定义. 注释 注释用# #此处是注释 n = 123 f = 456 不转义 Python中r‘  ’表示字符串默认不转义 print ...

  3. linux,进行批量下载文件操作

     wget -i url.txt -P ./Photo 批量下载图片(一般是某个相册的图片) 首先先得到一张图片的地址如:www.example.com/pic/001.jpg 同相册的图片地址会有一 ...

  4. Selenium_随记要点

      1.selenium不支持定位复合元素定位:     像上图的class元素有两个值: op_weather4_twoicon_today  -----    OP_LOG_LINK    像这种 ...

  5. maven命令行创建项目问题

    今天在命令行下创建maven项目,使用的是create命令,但是一直失败,网上查找原因说archetype:create命令已经过期,需要使用 archetype:generate 来进行代替 加上了 ...

  6. SaaS上云工具包为企业应用构筑上云之梯

    导语:本文中,阿里云资深技术专家郑刚将聚焦SaaS上云工具包如何帮助企业上云,包括产品上云.商品上市.服务上心,讲述了SaaS上云工具包为客户和伙伴提供的价值.在SaaS上云工具包整体解决方案的帮助下 ...

  7. 【Flutter学习】基本组件之基本表单组件

    一,概述 表单时一个包含表单元素的区域. 表单元素允许用户输入内容,比如文本域,下拉列表,单选框,复选框等.常见的应用场景有:登录,注册,输入信息等. 表单里有两个重要的组件: Form:用来做整个表 ...

  8. (转)4年python,总结一些改善Python程序的建议

    自己写Python也有四五年了,一直是用自己的"强迫症"在维持自己代码的质量.都有去看Google的Python代码规范,对这几年的工作经验,做个简单的笔记,如果你也在学pythp ...

  9. fatal error C1189: #error : "No Target Architecture" 解决办法一

    在编译程序的时候发现报这个错误,在网上看到很多文章,说设置include路径,lib目录等等,都没有解决.最后调整了以下include文件的顺序,问题解决了.例如 从头文件a.h中截取的一段 type ...

  10. ASP.NET Core学习——1

    ASP.NET Core介绍 ASP.NET Core是一个新的开源和跨平台的框架,用于构建如Web应用.物联网(IoT)应用和移动后端应用等连接到互联网的基于云的现代应用程序.ASP.NET Cor ...