zoukankan      html  css  js  c++  java
  • 【洛谷P1726】上白泽慧音

    上白泽慧音

    题目链接

    强联通分量模板题,Tarjan求强联通分量,记录大小即可

    #include<iostream>
    #include<cstring>
    #include<cstdio>
    #define N 5010
    #define M 100010
    int n,m,Head[N],Enum,stack[N],top,ms;
    int dfn[N],cnt,low[N],belong[N],size[N],num;
    bool ins[N];
    struct NODE{
        int to,next;
    } e[M];
    inline void add(int x,int y){
        e[++Enum].to=y;
        e[Enum].next=Head[x];
        Head[x]=Enum;
    }
    inline int read(){
        int x=0; char c=getchar();
        while(c<'0'||c>'9') c=getchar();
        while('0'<=c&&c<='9') { x=(x<<3)+(x<<1)+c-'0'; c=getchar(); }
        return x;
    }
    inline void Tarjan(int u){
        dfn[u]=low[u]=++cnt;
        ins[u]=1; stack[++top]=u;
        for(int i=Head[u];i;i=e[i].next){
            int v=e[i].to;
            if(!dfn[v]){
                Tarjan(v);
                low[u]=std::min(low[u],low[v]);
            }
            else if(ins[v])
                low[u]=std::min(low[u],dfn[v]);
        }
        if(low[u]==dfn[u]){
            belong[u]=++num;
            while(stack[top]!=u){
                int k=stack[top];
                belong[k]=num;
                size[num]++;
                ins[k]=0;
                top--;
            } size[num]++;
            top--; ins[u]=0;
        }
    }
    int main()
    {
        n=read(); m=read();
        int x,y,t;
        for(int i=1;i<=m;i++){
            x=read(); y=read(); t=read();
            add(x,y); if(t==2) add(y,x);
        }
        for(int i=1;i<=n;i++)
         if(!dfn[i]) Tarjan(i);
        for(int i=1;i<=num;i++)
         if(size[i]>ms) ms=size[i];
        int ans;
        for(int i=1;i<=n;i++)
         if(size[belong[i]]==ms){
             ans=belong[i];
             break;
         }
        printf("%d
    ",ms);
        for(int i=1;i<=n;i++)
         if(belong[i]==ans)
          printf("%d ",i);
        puts("");
        return 0;
    }
  • 相关阅读:
    状态模式
    简单密码再次加密
    服务层定义自己的服务异常类
    必备网络基础知识(持续补充)
    MongoDB基础入门
    Git命令整理
    算法基础(四)
    RabbitMQ消息队列
    设计模式(23种)
    二叉树知识点
  • 原文地址:https://www.cnblogs.com/yjkhhh/p/9414404.html
Copyright © 2011-2022 走看看