• hdu4738Caocao's Bridges


    什么?有人要炸我的桥?!D飞他(心疼周瑜大都督)

    这个就是求割边/桥了。

    #include<cstdio>
    #include<iostream>
    #include<cstring>
    #include<cstdlib>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    
    int n,m;
    struct node
    {
        int x,y,d,t,next;
    }a[2100000];int len,last[1100];
    void ins(int x,int y,int d,int t)
    {
        len++;
        a[len].x=x;a[len].y=y;a[len].d=d;a[len].t=t;
        a[len].next=last[x];last[x]=len;
    }
    
    int z,dfn[1100],low[1100];
    int top,sta[1100];
    int bp,bridge[1100000];
    void tarjan(int x,int pre)
    {
        dfn[x]=low[x]=++z;
        sta[++top]=x;
        for(int k=last[x];k;k=a[k].next)
        {
            int y=a[k].y;
            if(dfn[y]==0)
            {
                tarjan(y,k);
                low[x]=min(low[x],low[y]);
            }
            else if(a[pre].t!=a[k].t)
                low[x]=min(low[x],dfn[y]);
        }
        if(dfn[x]==low[x])
        {
            if(pre!=0)
                bridge[++bp]=pre;
            int i;
            do{
                i=sta[top];top--;
            }while(i!=x);
        }
    }
    int main()
    {
        while(scanf("%d%d",&n,&m)!=EOF)
        {
            if(n==0&&m==0)break;
            
            int x,y,d;
            len=0;memset(last,0,sizeof(last));
            for(int i=1;i<=m;i++)
            {
                scanf("%d%d%d",&x,&y,&d);
                ins(x,y,d,i);ins(y,x,d,i);
            }
            
            z=top=bp=0;
            memset(dfn,0,sizeof(dfn));
            memset(low,0,sizeof(low));
            tarjan(1,0);
            
            bool bk=true;
            for(int i=1;i<=n;i++)
                if(dfn[i]==0){bk=false;break;}
            if(bk==false){printf("0
    ");continue;}
            
            int ans=(1<<30);
            for(int i=1;i<=bp;i++)
                    ans=min(ans,a[bridge[i]].d);
            printf("%d
    ",(ans==(1<<30))?-1:((ans==0)?1:ans));
        }
        return 0;
    }
  • 相关阅读:
    skywalking学习
    logstash使用
    AIO编程
    NIO编程
    NIO入门之BIO
    Akka Cluster之集群分片
    Akka Stream之Graph
    【Swift学习笔记-《PRODUCT》读书记录-实现自定义转场动画】
    CoreData 数据模型文件导出NSManagedObject时重复问题
    iOS图片压缩
  • 原文地址:https://www.cnblogs.com/AKCqhzdy/p/8717154.html
Copyright © 2020-2023  润新知