zoukankan      html  css  js  c++  java
  • A1107 Social Clusters (30分)

    一、技术总结

    1. 这是一道并查集的题目,这里无非就是明白题目的含义,然后将套路用上基本上问题不大。
    2. 一个是father数组用于存储父亲结点,isRoot用于存储根结点,如果题目需要,还可以建立一个course数组,用于存储,例如这个题目就是用于判断该该兴趣是否有人涉及。
    3. findFather函数,用于查找结点的父亲结点,同时包含压缩路径。
    4. Union函数,用于合并。
    5. 初始化函数。

    二、参考代码

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn = 1010;
    int father[maxn];
    int isRoot[maxn] = {0};
    int course[maxn] = {0};
    int findFather(int x){
    	int a = x;
    	while(x != father[x]){
    		x = father[x];
    	}
    	//路径压缩
    	while(a != father[a]){
    		int z = a;
    		a = father[a];
    		father[z] = x;
    	} 
    	return x;
    }
    void Union(int a, int b){
    	int faA = findFather(a);
    	int faB = findFather(b);
    	if(faA != faB){
    		father[faA] = faB;
    	}
    } 
    void init(int n){
    	for(int i = 1; i <= n; i++){
    		father[i] = i;
    		//isRoot[i] = false;
    	}
    }
    bool cmp(int a, int b){//将isRoot数组从大到小排序  
    	return a > b;
    }
    int main(){
    	int n, k, h;
    	scanf("%d", &n);
    	init(n);
    	for(int i = 1; i <= n; i++){
    		scanf("%d:", &k);
    		for(int j = 0; j < k; j++){
    			scanf("%d", &h);
    			if(course[h] == 0){
    				course[h] = i;
    			}
    			Union(i, findFather(course[h]));
    		}
    	} 
    	for(int i = 1; i <= n; i++){
    		isRoot[findFather(i)]++;
    	}
    	int ans = 0;
    	for(int i = 1; i <= n; i++){
    		if(isRoot[i] != 0){
    			ans++;
    		}
    	}
    	printf("%d
    ", ans);
    	sort(isRoot+1, isRoot+n+1, cmp);
    	for(int i = 1; i <= ans; i++){
    		if(i != 1) printf(" ");
    		printf("%d", isRoot[i]);
    	}
    	return 0;
    }
    
    作者:睿晞
    身处这个阶段的时候,一定要好好珍惜,这是我们唯一能做的,求学,钻研,为人,处事,交友……无一不是如此。
    劝君莫惜金缕衣,劝君惜取少年时。花开堪折直须折,莫待无花空折枝。
    曾有一个业界大牛说过这样一段话,送给大家:   “华人在计算机视觉领域的研究水平越来越高,这是非常振奋人心的事。我们中国错过了工业革命,错过了电气革命,信息革命也只是跟随状态。但人工智能的革命,我们跟世界上的领先国家是并肩往前跑的。能身处这个时代浪潮之中,做一番伟大的事业,经常激动的夜不能寐。”
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    Python关键字
    tomcat中 server.xml
    Java web.xml笔记
    HTML标签笔记
    jsp笔记
    Ubuntu 安装 chrome
    隐藏文件管理器左侧导航栏的部分内容
    virtualbox中设置u盘启动
    剑指Offer题解索引
    当你在浏览器地址栏输入一个URL后回车,将会发生的事情?
  • 原文地址:https://www.cnblogs.com/tsruixi/p/12350051.html
Copyright © 2011-2022 走看看