zoukankan      html  css  js  c++  java
  • [hdu4738]求桥模板

    oj问题,待修改,存档。

     1 #include<stdio.h>  
     2 #include<iostream>  
     3 #include<cstdio>  
     4 #include<stack>  
     5 using namespace std;  
     6 #define maxn 111111  
     7 #define inf 11111111  
     8 stack<int>s;  
     9 int dfn[maxn],low[maxn];  
    10 int iscut[maxn];  
    11 int cnt,scc,ans,clc;  
    12 struct edge{  
    13     int to,next,w,id;  
    14 }e[maxn*10];  
    15 int head[maxn];  
    16 void add(int u,int v,int w,int id){  
    17     e[cnt].to=v;e[cnt].next=head[u];e[cnt].w=w;e[cnt].id=id;  
    18     head[u]=cnt++;  
    19 }  
    20 void init(){  
    21     memset(dfn,0,sizeof dfn);  
    22     memset(low,0,sizeof low);  
    23     memset(head,-1,sizeof head);  
    24     memset(iscut,0,sizeof iscut);  
    25     cnt=0;scc=0,clc=0;  
    26 }  
    27 void dfs(int u,int fa){  
    28     low[u]=dfn[u]=++clc;  
    29     for(int i=head[u];i!=-1;i=e[i].next){  
    30         int v=e[i].to;  
    31         if(e[i].id==fa)continue;
    32         if(!dfn[v]){  
    33              dfs(v,e[i].id);  
    34              low[u]=min(low[u],low[v]);  
    35               if(low[v]>dfn[u]){  
    36                   ans=min(ans,e[i].w);  
    37               }  
    38         }  
    39         else low[u]=min(low[u],dfn[v]);  
    40     }  
    41 }  
    42 int n,m,a,b,c;  
    43 int main(){  
    44     while(~scanf("%d%d",&n,&m)){  
    45         if(!n&&!m)break;  
    46         init();  
    47         for(int i=1;i<=m;++i){  
    48             scanf("%d%d%d",&a,&b,&c);  
    49             add(a,b,c,i);  
    50             add(b,a,c,i);  
    51         }  
    52         int blo=0;ans=inf;  
    53         for(int i=1;i<=n;++i)  
    54             if(!dfn[i]){  
    55                 blo++;  
    56                 dfs(i,-1);  
    57             }  
    58         if(blo>1)printf("0
    ");  
    59         else if(!ans)printf("1
    ");  
    60         else if(ans==inf)printf("-1
    ");  
    61         else printf("%d
    ",ans);  
    62     }  
    63     return 0;  
    64 }  
  • 相关阅读:
    函数探幽--引用变量
    函数探幽—内联函数
    我遇到的头文件
    继承的特点
    汇编语言中压栈与入栈
    cin.good(),cin.fail(),cin.clear()
    结构体的处理(以c++primer plus 第六章习题4为例)
    uva508
    uva253 CubePainting
    uva1590
  • 原文地址:https://www.cnblogs.com/elpsycongroo/p/7698315.html
Copyright © 2011-2022 走看看