zoukankan      html  css  js  c++  java
  • HDU 4738 Caocao's Bridges(Tarjan)

    题目链接

      1 #include <iostream>
      2 #include <cstring>
      3 #include <cstdio>
      4 #include <queue>
      5 #include <cstdlib>
      6 using namespace std;
      7 #define N 1001
      8 #define M 20000001
      9 #define INF 0x3f3f3f3f
     10 struct node
     11 {
     12     int u,v,next;
     13 }edge[M];
     14 int first[N],DFN[N],Belong[N],stack[N],Low[N],cnum[N];
     15 int in[N],d[N];
     16 int qu[M],qv[M],qw[M];
     17 int n,m;
     18 bool vis[M];
     19 int tot,scnt,top;
     20 int o[M];
     21 void CL()
     22 {
     23     tot = scnt = top = 0;
     24     memset(first,-1,sizeof(first));
     25     memset(in,0,sizeof(in));
     26     memset(DFN,0,sizeof(DFN));
     27     memset(vis,0,sizeof(vis));
     28 }
     29 void add(int u,int v,int w)
     30 {
     31     edge[tot].u = u;
     32     edge[tot].v = v;
     33     edge[tot].next = first[u];
     34     first[u] = tot ++;
     35 }
     36 void Tarjan(int u)
     37 {
     38     int v,i;
     39     DFN[u] = Low[u] = ++ tot;
     40     stack[top++] = u;
     41     in[u] = 1;
     42     for(i = first[u];i != -1;i = edge[i].next)
     43     {
     44         v = edge[i].v;
     45         if(vis[i]) continue;
     46         vis[i] = vis[i^1] = 1;
     47         if(!DFN[v])
     48         {
     49             Tarjan(v);
     50             Low[u] = min(Low[u],Low[v]);
     51         }
     52         else
     53         {
     54             Low[u] = min(Low[u],DFN[v]);
     55         }
     56     }
     57     if(DFN[u] == Low[u])
     58     {
     59         scnt ++;
     60         do
     61         {
     62             v = stack[--top];
     63             Belong[v] = scnt;
     64             in[v] = 0;
     65             cnum[scnt] ++;
     66         }while(u != v);
     67     }
     68 }
     69 int find(int x)
     70 {
     71     int r,t;
     72     r = x;
     73     while(o[x] != x)
     74     x = o[x];
     75     while(r != x)
     76     {
     77         t = o[r];
     78         o[r] = x;
     79         r = t;
     80     }
     81     return x;
     82 }
     83 void merge(int x,int y)
     84 {
     85     x = find(x);
     86     y = find(y);
     87     if(x != y)
     88     o[x] = y;
     89 }
     90 int main()
     91 {
     92     int n,m,i,u,v,w,minz;
     93     while(scanf("%d%d",&n,&m)!=EOF)
     94     {
     95         if(n == 0&&m == 0) break;
     96         CL();
     97         for(i = 1;i <= n;i ++)
     98         {
     99             o[i] = i;
    100         }
    101         for(i = 0;i < m;i ++)
    102         {
    103             scanf("%d%d%d",&u,&v,&w);
    104             qu[i] = u;
    105             qv[i] = v;
    106             qw[i] = w;
    107             merge(u,v);
    108             add(u,v,w);
    109             add(v,u,w);
    110         }
    111         int fa = find(1);
    112         for(i = 2;i <= n;i ++)
    113         {
    114             if(find(i) != fa)
    115             break;
    116         }
    117         if(i != n+1)
    118         {
    119             printf("0
    ");
    120             continue;
    121         }
    122         minz = 10000000;
    123         Tarjan(1);
    124         for(i = 0;i < m;i ++)
    125         {
    126             if(Belong[qu[i]] != Belong[qv[i]])
    127             {
    128                 minz = min(minz,qw[i]);
    129             }
    130         }
    131         if(scnt == 1)
    132         printf("-1
    ");
    133         else
    134         {
    135             if(minz == 0)
    136             printf("1
    ");
    137             else
    138             printf("%d
    ",minz);
    139         }
    140     }
    141 
    142 }
  • 相关阅读:
    Qt获取程序工作目录或某路径下所有的图片或指定格式的文件
    QGraphicsView Class
    自动白平衡---灰度世界算法
    Gamma校正算法原理及实现
    QWidget,QTableWidget删除(delete)动态添加(new)的子控件释放内存
    [转]【OpenCV】OpenCV中GPU模块使用
    php之trait 个人笔记
    git 本地忽略某些个文件
    bootstrop-datatime参数配置
    mysql 一次性插入上万条数据测试专用
  • 原文地址:https://www.cnblogs.com/naix-x/p/3325961.html
Copyright © 2011-2022 走看看