zoukankan      html  css  js  c++  java
  • AC日记——[POI2008]BLO-Blockade 洛谷 [POI2008]BLO-Blockade

    [POI2008]BLO-Blockade

    思路:

      tarjan;

    代码:

    #include <bits/stdc++.h>
    using namespace std;
    #define maxn 100005
    #define maxm 500005
    #define ll long long
    ll Count[maxn],E[maxm<<1],V[maxm<<1],head[maxn],cnt;
    ll size[maxm],dfn[maxn],n,m,tot,low[maxn];
    inline void in(ll &now)
    {
        char Cget=getchar();now=0;
        while(Cget>'9'||Cget<'0')Cget=getchar();
        while(Cget>='0'&&Cget<='9')
        {
            now=now*10+Cget-'0';
            Cget=getchar();
        }
    }
    void tarjan(ll now)
    {
        ll tmp=0;
        size[now]=1,dfn[now]=low[now]=++tot;
        for(ll i=head[now];i;i=E[i])
        {
            if(dfn[V[i]]) low[now]=min(low[now],dfn[V[i]]);
            else
            {
                tarjan(V[i]),size[now]+=size[V[i]],low[now]=min(low[now],low[V[i]]);
                if(dfn[now]<=low[V[i]])Count[now]+=tmp*size[V[i]],tmp+=size[V[i]];
            }
        }
        Count[now]+=tmp*(n-tmp-1);
    }
    int main()
    {
        in(n),in(m);ll u,v;
        while(m--)
        {
            in(u),in(v);
            E[++cnt]=head[u],V[cnt]=v,head[u]=cnt;
            E[++cnt]=head[v],V[cnt]=u,head[v]=cnt;
        }
        tarjan(1);
        for(ll i=1;i<=n;i++) printf("%lld
    ",(Count[i]+n-1)<<1);
        return 0;
    }
  • 相关阅读:
    《将才》读后感
    存储过程
    frame间传值
    IBM TSM解决方案的技术优势
    通过ISA发布Sharepoint 2007的两种认证方式
    ISA Server 2006新功能(1)
    MetaWeblogAPI C# Code Sample
    客户域环境维护记录
    春运教训
    1明
  • 原文地址:https://www.cnblogs.com/IUUUUUUUskyyy/p/7071860.html
Copyright © 2011-2022 走看看