zoukankan      html  css  js  c++  java
  • BZOJ 2815 [ZJOI2012]灾难

    题面

    题解

    //Twenty
    #include<cstdio>
    #include<cstdlib>
    #include<iostream>
    #include<algorithm>
    #include<cmath>
    #include<cstring>
    #include<queue>
    #include<vector>
    #include<ctime>
    const int maxn=65534+5;
    typedef long long LL;
    using namespace std;
    int n,fir[maxn],nxt[maxn*50],to[maxn*50],in[maxn],ecnt,sta[maxn],R[maxn],f[maxn][21],sz[maxn],l=1,r;
    void add(int u,int v) {
        nxt[++ecnt]=fir[u]; fir[u]=ecnt; to[ecnt]=v;
    }
    int lca(int x,int y) {
        if(R[x]<R[y]) swap(x,y);
        for(int i=20;i>=0;i--) 
            if(f[x][i]!=-1&&R[f[x][i]]>=R[y])
                 x=f[x][i];
        if(x==y) return y;
        for(int i=20;i>=0;i--)
            if(f[x][i]!=-1&&f[x][i]!=f[y][i])
                x=f[x][i],y=f[y][i];
        return f[x][0];
    }
    void tpsort() {
        for(int i=1;i<=n;++i) f[i][0]=-1;
        for(int i=1;i<=n;i++) 
            if(!in[i]) 
                sta[++r]=i,f[i][0]=0;
        while(l<=r) {
            int x=sta[l++];
            R[x]=R[f[x][0]]+1;
            for(int i=1;i<=20;i++) f[x][i]=f[f[x][i-1]][i-1];
            for(int i=fir[x];i;i=nxt[i]) {
                int y=to[i];
                in[y]--;
                if(f[y][0]==-1) f[y][0]=x;
                else f[y][0]=lca(f[y][0],x);
        
                if(!in[y]) sta[++r]=y;
            }
        }
        for(int i=r;i>=1;i--) sz[f[sta[i]][0]]+=(sz[sta[i]]+1);
    }
    int main()
    {
        scanf("%d",&n);
        for(int i=1;i<=n;i++) {
            for(int x=1;x;) {
                scanf("%d",&x);
                if(x) { 
                    in[i]++; 
                    add(x,i);
                }
            }
            
        }
        tpsort();
        for(int i=1;i<=n;i++) printf("%d
    ",sz[i]);
        return 0;
    }
    View Code
  • 相关阅读:
    linux vim编辑
    jQuery Ajax 操作函数
    导出excel表功能
    jquery 分页控件功能
    数据绑定后细节处理
    删除数据库日志文件的操作语句
    SqlHelper.cs
    c#中$.ajax的使用
    SpringBoot 获取微信小程序openid
    Arduino IDE 开发 ESP-01S/ESP-01物联网实战检测温度湿度上传MQTT服务器
  • 原文地址:https://www.cnblogs.com/Achenchen/p/7623164.html
Copyright © 2011-2022 走看看