好久没写题解了= =这次是bzoj 1051

唉= =这道题我都想到了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;
}
时间: 2024-10-17 17:42:15

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

好久没写关于论坛的程序了

最近发现有个很牛逼的论坛,里面有个插件可以直接让支付宝即时付款,具体怎么实现的没看明白,好像是叫一品楼吧,有个收款的地方用的支付宝,但是可以直接选择自动提交付款人信息和付款的金额到支付宝的即时支付界面,好像很高端的样子,还可以提交银行卡号哦,真心很牛逼.求高人解答 好久没写关于论坛的程序了,布布扣,bubuko.com

就是想写点干什么,好久没写了

在美国,呆了两个多月了,生活自在,玩的开心,但工作上,我遇到了一些问题. 工作再多,再累,再难,我不会抱怨半句.心里边,我认为这是体验,是挑战,是机会.但当这个过程里,出现了你心爱的人,那么结果就会很不一样.我现在一边带着耳机听着爱爱的音乐,一边泪如雨下,心情有些复杂. 刚刚在会上,跟他吵过,其实也不算吵,就是争论吧,我抛出的两个方案,第一个又被他批的体无完肤,毫无根据,make no sense,就第二个达成一致.这样的场景,在工作中其实稀松平常,跟别人争,我不示弱,错了也不怕,怕毛,被P掉心

好久没写博客了

好久没写了,混迹了这么久,不是没空写. 只是怕写出来的东西误人子弟. 是时候放慢脚步了,多看看书,虽然书有时看不下去,但偶尔还能印象到心里,等以后可能会想起来. 保持投入的激情,一定要投入 似 水流 年

好久没写的博客_数组的长度等小问题

好久没写,有点懒,有点忙. 但我觉得最主要的原因是,我最近遇上的问题都没什么关联性,很难让我在一篇博客里把他们都串联起来. 一个问题写一篇博客又有点小题大做了. 不管怎么样堆积了那么多问题,还是先整合一下吧. 1.声明在使用前 当然可以直接先定义再使用,但是我本人不喜欢.我更喜欢用main函数打头,不然找它要找半天. 一般情况下是函数的声明,别忘记就行.容易出错的是算上结构体的时候. 由于我不清楚结构体的声明格式,因此把结构体放在main函数前,当然这还是可以接受的. 但是会存在结构体作为函数参

好久没写Blog了

上一年的经历: <炸年兽>搞了一阵后,美术去创业了.. 和另一个美术断断续续,做了个<斗战圣佛>,挺山寨的,都没敢跟别人说. 不管怎么说也算是自己上了一个appStore的游戏,自己找了并配了些音乐,还P了些图..也是有收获. 还去阿里云那搞了个服务器,架上网站,结果发现根本没时间维护. 还想搭个Pomelo服务器在上面,然后写个多人联机的<坦克大战>,最后还是因为没时间而夭折了. 今年打算花业余的时间用unity再做些小游戏,至少手不生. 每天又花点时间画画,贵在坚持

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

具体代码就不贴出来了   通俗易懂的理解方式      原创 c++设计模式: 简单工厂模式 工厂模式有一种非常形象的描述,建立对象的类就如一个工厂,而需要被建立的对象就是一个个产品:在工厂中加工产品,使用产品的人,不用在乎产品是如何生产出来的.从软件开发的角度来说,这样就有效的降低了模块之间的耦合. 使用情景:   在不确定会有多少个处理操作时应该考虑使用简单工厂模式,如针对同样的接收到的数据,处理的逻辑可能会不同,可能以后还会增加新的操作. 案例:  如果实现计算器的功能时,对于同样的输入数

好久没写了

作为博客曾经的业务负责人,平时在老在博客晃悠,今天进入到自己的博客才发现自从做了学院,就木有再写过博客了,非常的对不起- 说下我现在负责的业务,我现在是51CTO学院微职位负责人,负责微职位整体业务(ps:除了招生哈),欢迎大家来微职位学习哦- http://edu.51cto.com/px/ 原文地址:http://blog.51cto.com/sallycao/2132570

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

服务器突然中了病毒,查杀后,结果两个服务也丢了, 从其他机器上COPY了两个EXE过来,编写这两个服务就搞定了,不用重装MSSQL2005了 sc create MSSQLSERVER binpath= "\"C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\sqlservr.exe\" -sMSSQLSERVER" displayname= "SQL Server (MSSQLSERVER)

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

百度地图Api中 除覆盖物有两个方法:map.removeOverlay()或者 map.clearOverlays(),其中 clearOverlays()方法一次移除所有的覆盖物removeOverlay()一次移除一个指定覆盖物 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name=&