zoukankan      html  css  js  c++  java
  • POJ 2492

     1 #include<iostream>
     2 #include<stdio.h>
     3 #define MAXN 2050
     4 using namespace std;
     5 
     6 int pre[MAXN];
     7 int opp[MAXN];
     8 
     9 void init(int n)
    10 {
    11     int i;
    12     for(i = 0; i <= n; ++ i)
    13     {
    14         pre[i] = i;
    15         opp[i] = -1;
    16     }
    17 }
    18 
    19 int find_pre(int x)
    20 {
    21     if(pre[x] != x)
    22     {
    23         pre[x] = find_pre(pre[x]);
    24     }
    25     return pre[x];
    26 }
    27 
    28 int comb(int x,int y)
    29 {
    30     if(x == -1)
    31         return y;
    32     if(y == -1)
    33         return x;
    34     pre[x] = y;
    35     return y;
    36 }
    37 
    38 int main()
    39 {
    40     //freopen("acm.acm","r",stdin);
    41     int test;
    42     int n;
    43     int m;
    44     int i;
    45     int u;
    46     int v;
    47     int temp1;
    48     int temp2;
    49     bool boo;
    50     bool bo;
    51     int k;
    52     scanf("%d",&test);
    53     for(k = 0; k < test; ++ k)
    54     {
    55         scanf("%d%d",&n,&m);
    56         init(n);
    57         boo = false;
    58 
    59         cout<<"Scenario #"<<k+1<<":"<<endl;
    60         for(i = 0; i < m; ++ i)
    61         {
    62             bo = false;
    63             scanf("%d%d",&u,&v);
    64             temp1 = u;
    65             temp2 = v;
    66             if(i != 0)
    67             {
    68                 temp1 = find_pre(temp1);
    69                 temp2 = find_pre(temp2);
    70                 if(temp1 == temp2)
    71                 {
    72                     boo = true;
    73                 //    bo = true;
    74                 }
    75             }
    76             if(!boo)
    77             {
    78                 u = find_pre(u);
    79                 v = find_pre(v);
    80                 temp1 = comb(u,opp[v]);
    81                 temp2 = comb(opp[u],v);
    82                 opp[temp1] = temp2;
    83                 opp[temp2] = temp1;
    84             }
    85         }
    86         if(boo)
    87         {
    88             cout<<"Suspicious bugs found!"<<endl;
    89         }
    90         else
    91         {
    92             cout<<"No suspicious bugs found!"<<endl;
    93         }
    94         cout<<endl;
    95     }
    96 }
  • 相关阅读:
    Android 5.X新特性之RecyclerView基本解析及无限复用
    Android 网络框架之Retrofit2使用详解及从源码中解析原理
    Android 源码解析之AsyncTask
    Business Logic
    WHO AM I
    黑洞
    俄罗斯方块
    还记得八皇后的解法吗
    汝之蜜糖,吾之砒霜
    项目为什么会失败
  • 原文地址:https://www.cnblogs.com/gavinsp/p/4568442.html
Copyright © 2011-2022 走看看