zoukankan      html  css  js  c++  java
  • hdu 2473 Junk-Mail Filter

    http://acm.hdu.edu.cn/showproblem.php?pid=2473

    并查集设置虚拟父节点。

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <algorithm>
     4 #define maxn 1100000
     5 using namespace std;
     6 
     7 int f[maxn],num[maxn];
     8 int in[maxn],n,m;
     9 
    10 void inti()
    11 {
    12     for(int i=0; i<n; i++)
    13     {
    14         f[i]=in[i]=i;
    15         num[i]=1;
    16     }
    17 }
    18 
    19 int find1(int x)
    20 {
    21     if(x==f[x]) return x;
    22     return f[x]=find1(f[x]);
    23 }
    24 
    25 void merge1(int a,int b)
    26 {
    27     int fa=find1(a);
    28     int fb=find1(b);
    29     if(fa!=fb)
    30     {
    31         f[fa]=fb;
    32         num[fb]+=num[fa];
    33         num[fa]=0;
    34     }
    35 }
    36 
    37 int main()
    38 {
    39     int ca=1;
    40     while(scanf("%d%d",&n,&m)!=EOF)
    41     {
    42         inti();
    43         if(n==0&&m==0) break;
    44         getchar();
    45         char ch;
    46         int ans=n;
    47         int u,v;
    48         for(int i=1; i<=m; i++)
    49         {
    50             scanf("%c",&ch);
    51             if(ch=='M')
    52             {
    53 
    54                 scanf("%d%d",&u,&v);
    55                 merge1(in[u],in[v]);
    56             }
    57             else if(ch=='S')
    58             {
    59                 scanf("%d",&v);
    60                 int f1=find1(in[v]);
    61                 num[f1]--;
    62                 in[v]=ans;
    63                 f[ans]=ans;
    64                 num[ans]=1;
    65                 ans++;
    66             }
    67             getchar();
    68         }
    69         int t1=0;
    70         for(int i=0; i<ans; i++)
    71         {
    72             if(num[i]>0) t1++;
    73         }
    74         printf("Case #%d: %d
    ",ca++,t1);
    75     }
    76     return 0;
    77 }
    View Code
  • 相关阅读:
    个人博客
    个人博客
    5.4
    4.30
    4.29
    4.28
    4.27
    4.26
    4.25
    4.24
  • 原文地址:https://www.cnblogs.com/fanminghui/p/3728761.html
Copyright © 2011-2022 走看看