zoukankan      html  css  js  c++  java
  • HDU 3172 Virtual Friends(并用正确的设置检查)

    职务地址:HDU 3172

    带权并查集水题。每次合并的时候维护一下权值。注意坑爹的输入。

    代码例如以下:

    #include <iostream>
    #include <cstdio>
    #include <string>
    #include <cstring>
    #include <stdlib.h>
    #include <math.h>
    #include <ctype.h>
    #include <queue>
    #include <map>
    #include <set>
    #include <algorithm>
    
    using namespace std;
    #define LL long long
    int bin[210000], num[210000];
    int find1(int x)
    {
        return bin[x]==x?

    x:bin[x]=find1(bin[x]); } void join(int x, int y) { int f1=find1(x); int f2=find1(y); if(f1!=f2) { bin[f2]=f1; num[f1]+=num[f2]; printf("%d ",num[f1]); } else printf("%d ",num[f2]); } int main() { int t, n, i, cnt; char s1[30], s2[30]; map<string,int>q; while(scanf("%d",&t)!=EOF) { while(t--) { scanf("%d",&n); for(i=1; i<210000; i++) { bin[i]=i; num[i]=1; } q.clear(); cnt=1; while(n--) { getchar(); scanf("%s%s",s1,s2); if(!q[s1]) q[s1]=cnt++; if(!q[s2]) q[s2]=cnt++; join(q[s1],q[s2]); } } } return 0; }



    版权声明:本文博主原创文章。博客,未经同意不得转载。

  • 相关阅读:
    汇编学习笔记(一)
    外部中断的资料
    喇叭的落幕
    红外模块
    SQL2005连接不上解决
    DataGrid中动态添加列,使用CheckBox选择行
    List和ObservableCollection的相互转化
    使用C#发送邮件
    C#委托与事件 简明
    Linq GroupBy 求和
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/4853536.html
Copyright © 2011-2022 走看看