唉= =这道题我都想到了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. input | button | textarea 元素的checked, disabled,hidden属性控制

    这三种元素涉及到的checked, disabled,hidden属性的控制方法如下 一.attribute方法: //以下3行,都会影响HTML的( checked | disabled | hid ...

  2. redis - 环境搭建(转)

      一:简介(来自百科) redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合)和zse ...

  3. Python模块和模块引用(一)

    """ import my_module as mm courses = ['History','Math','Physics','CompSci'] index = m ...

  4. git——修改已经提交并push后的commit注释

    把代码push到远程后,发现commit的注释居然多了几个错别字,不行,必须改了! 搜索了一些答案之后自己做了一个总结如下: ①修改倒数第次的commit 指令:$ git rebase -i HEA ...

  5. 根据ID查询实体

    //查询实体 $scope.findOne=function(id){ $http.get('../brand/findOne.do?id='+id).success( function(respon ...

  6. 聊一聊JavaScript中的事件循环

    一.概念:事件循环 JavaScript是单线程的 1.整片 script 整体代码(第一个宏任务)放到执行栈中,执行之后,会触发很多方法 这些方法只能一个个的顺序执行,不能并发 2.这些要执行的方法 ...

  7. Minimum Snap轨迹规划详解(2)corridor与时间分配

    在上一篇文章中,我们得到的轨迹并不是很好,与路径差别有点大,我们期望规划出的轨迹跟路径大致重合,而且不希望有打结的现象,而且希望轨迹中的速度和加速度不超过最大限幅值.为了解决这些问题有两种思路: 思路 ...

  8. Delphi GDI+ 安装方法

    [转]Delphi GDI+ 安装方法转自:万一博客(http://www.cnblogs.com/del/)GDI+ 是 Windows 的一个函数库, 来自 Windows\System32\GD ...

  9. js和php语法区别

    参考 : https://www.wangjingxian.cn/php/51.html

  10. cgo 和 Go 语言是两码事

    cgo不是Go 借用 JWZ的一句话 有些人,当他们面临一个问题时,认为“我知道,我会使用 cgo ”.那么现在,他们有了两个问题. 最近有人在 Gopher 的 Slack Channel 上使用 ...