zoukankan      html  css  js  c++  java
  • hdu 2473 并差集的删除操作


    虚拟数组 待定/。
    #include<iostream> #include<algorithm> #include<set>
    using namespace std; int f[1000001],n,m; int hash1[100001]; set<int> st; void init() { for(int i=0;i<n;i++) { f[i]=i; hash1[i]=i; } } int find(int x) { if(x==f[x]) return f[x]; f[x]=find(f[x]); return f[x]; } void Union(int x,int y) { int a=find(x); int b=find(y); if(a==b) return ; f[a]=b; } int main() { int cas=0,a,b; char str[5]; while(scanf("%d %d",&n,&m)==2 &&(n||m)) { init(); st.clear(); int num=n; while(m--) { scanf("%s",str); if(str[0]=='S') { scanf("%d",&a); hash1[a]=num++; f[hash1[a]]=hash1[a]; } else { scanf("%d %d",&a,&b); Union(hash1[a],hash1[b]); } } int ans=0; for(int i=0;i<n;i++) { // printf("%d %d ",hash1[i],find(hash1[i])); st.insert(find(hash1[i])); } printf("Case #%d: %d ",++cas,st.size()); } return 0; }
  • 相关阅读:
    ADO.NET存取数据库数据
    2017-01-03
    re模块
    random模块(随机)
    sys模块
    os模块
    datetime模块
    time模块
    logging模块
    Python函数初识
  • 原文地址:https://www.cnblogs.com/z1141000271/p/5795552.html
Copyright © 2011-2022 走看看