zoukankan      html  css  js  c++  java
  • HDU4738 Caocao's Bridges 无向图的桥

    一眼题:找所有的桥,然后求最小权值

    但是有很多坑点

    1:如果本来不联通 输出0,(这个坑我知道)

    2:但是还有一个坑,就是当整个连通,最小桥的权值是0时,也必须派一个人去,wa了无数遍(还是太年轻)

    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <cmath>
    #include <string>
    #include <stack>
    #include <vector>
    #include <map>
    #include <queue>
    #include <algorithm>
    #include <utility>
    using namespace std;
    typedef long long LL;
    const int N=1e3+5;
    const int INF=0x3f3f3f3f;
    struct Edge{
       int w,v,next;
    }edge[N*N*2];
    int head[N],tot,n,m;
    void add(int u,int v,int w){
        edge[tot].w=w;
        edge[tot].v=v;
        edge[tot].next=head[u];
        head[u]=tot++;
    }
    bool instack[N];
    int dfn[N],low[N],clk,cnt,ans;
    void targin(int u,int f){
       dfn[u]=low[u]=++clk;
       bool flag=1;
       for(int i=head[u];~i;i=edge[i].next){
           int v=edge[i].v;
           if(flag&&v==f){
            flag=0;continue;
           }
           if(!dfn[v]){
              targin(v,u);
              low[u]=min(low[u],low[v]);
              if(low[v]>dfn[u]){
                 ans=min(ans,edge[i].w);
              }
           }
           else if(dfn[v]<low[u])low[u]=dfn[v];
       }
    }
    int main()
    {
        while(~scanf("%d%d",&n,&m)){
            if(!n&&!m)break;
            memset(head,-1,sizeof(head));
            memset(dfn,0,sizeof(dfn));
            tot=clk=0;ans=INF;
            for(int i=1;i<=m;++i){
              int u,v,w;
              scanf("%d%d%d",&u,&v,&w);
              add(u,v,w);add(v,u,w);
            }
            bool flag=0;
            for(int i=1;i<=n;++i)
             if(!dfn[i]){
                targin(i,-1);
               if(i>1)flag=1;
            }
            if(flag)ans=0;
            else if(ans==0)ans=1;
            if(ans==INF)printf("-1
    ");
            else printf("%d
    ",ans);
        }
        return 0;
    }
    View Code
  • 相关阅读:
    Nagios利用NSClient++监控Windows主机
    Nagios监控Windows的网卡流量
    Nagios 监控Windows服务器(详细篇)
    ODB学习笔记之基础环境搭建
    用Kindle阅读PDF最简单的3个方法!
    RocketMQ吐血总结
    RocketMQ使用
    掌握 analyze API,一举搞定 Elasticsearch 分词难题
    ElasticSearch5.3安装IK分词器并验证
    Kibana server is not ready yet出现的原因
  • 原文地址:https://www.cnblogs.com/shuguangzw/p/5503575.html
Copyright © 2011-2022 走看看