zoukankan      html  css  js  c++  java
  • hdu 4496(并查集)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4496

    思路:简单并查集应用,从后往前算就可以了。

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 using namespace std;
     6 #define MAXN 10100
     7 #define MAXM 1001000
     8 
     9 struct Edge{
    10     int u,v;
    11 }edge[MAXM];
    12 
    13 int n,m,ans[MAXM];
    14 int parent[MAXN];
    15 int Find(int x)
    16 {
    17     if(x==parent[x]){
    18         return parent[x];
    19     }
    20     parent[x]=Find(parent[x]);
    21     return parent[x];
    22 }
    23 
    24 void Union(int u,int v)
    25 {
    26     int r1=Find(u),r2=Find(v);
    27     if(r1==r2)return ;
    28     parent[r1]=r2;
    29 }
    30 
    31 int main()
    32 {
    33     int k;
    34     while(~scanf("%d%d",&n,&m)){
    35         for(int i=0;i<n;i++)parent[i]=i;
    36         for(int i=0;i<m;i++){
    37             scanf("%d%d",&edge[i].u,&edge[i].v);
    38         }
    39         ans[m-1]=n;
    40         k=m-1;
    41         for(int i=m-1;i>=0;i--){
    42             int u=edge[i].u,v=edge[i].v;
    43             if(Find(u)!=Find(v)){
    44                 Union(u,v);
    45                 ans[k-1]=ans[k]-1;
    46             }else 
    47                 ans[k-1]=ans[k];
    48             k--;
    49         }
    50         for(int i=0;i<m;i++){
    51             printf("%d
    ",ans[i]);
    52         }
    53     }
    54     return 0;
    55 }
    56 
    57 
    58         
    59         
    60         
    View Code
  • 相关阅读:
    自定义转化
    asp.net JSON(一)
    做一个会偷懒的码农
    活动和监视器
    linq 分组求和
    sql语句查询列的说明
    chartControl
    LayOutControl
    sql 给表结构增加说明
    我的单件模式
  • 原文地址:https://www.cnblogs.com/wally/p/3316876.html
Copyright © 2011-2022 走看看