[Codeforces] 277A - Learning Languages
2014-08-05 13:41
85 查看
题意:
n个职员各会Ki门语言,Ki可以为0。
现在需要让每个职员可以间接地与其他任意职员沟通,每个员工学一门语言需要花费1。问公司最少需要花多少钱。
举个例子,如果职员A会1,2两种语言,职员B会2,3两种语言,那么职员A就也会3这门语言,因为可以由B间接帮助A翻译。
用并查集可做,我们知道Ki为0的一定需要学一门语言,把每个职员自己会的语言并起来。最后判断有几棵树+Ki为0的个数即是所求。
n个职员各会Ki门语言,Ki可以为0。
现在需要让每个职员可以间接地与其他任意职员沟通,每个员工学一门语言需要花费1。问公司最少需要花多少钱。
举个例子,如果职员A会1,2两种语言,职员B会2,3两种语言,那么职员A就也会3这门语言,因为可以由B间接帮助A翻译。
用并查集可做,我们知道Ki为0的一定需要学一门语言,把每个职员自己会的语言并起来。最后判断有几棵树+Ki为0的个数即是所求。
#include <stdio.h> #include <string.h> #include <math.h> #include <stdlib.h> #include <algorithm> #include <iostream> #include <set> #include <map> #include <queue> #include <stack> using namespace std; int a[1000], flag[101]; int find(int x) { if(x != a[x]) { a[x] = find(a[x]); } return a[x]; } void union_set(int x, int y) { x = find(x); y = find(y); if(x != y) { a[x] = y; } } void init(int m) { for(int i = 0; i <= m; i++) { a[i] = i; } memset(flag, 0, sizeof(flag)); } int main() { int n, m, ans; while(~scanf("%d %d", &n, &m)) { ans = 0; init(m); for(int i = 0; i < n; i++) { int k; scanf("%d", &k); if(!k) { ++ans; } else { int temp; int kk; scanf("%d", &kk); flag[kk] = 1; for(int j = 1; j < k; j++) { scanf("%d", &temp); flag[temp] = 1; union_set(kk, temp); } } } int tmp = 0; for(int i = 1; i <= m; i++) { if(flag[i] && a[i] == i) { ++tmp; } } if(tmp > 1) ans += tmp - 1; printf("%d\n", ans); } return 0; }
相关文章推荐
- 【Codeforces Round #170】Codeforces 277A Learning Languages
- 第五周周赛——你好,你的优先队列到了,请查收题解(出自poj1862,HDU4546,codeforces 277A,437A,638A,523D)
- CodeForces 277A Learning Languages 并查集
- codeforces-#465A. inc ARG(模拟)
- 【codeforces 115E】Linear Kingdom Races (datestructs(seg.tree)+dp)
- codeforces 653A . Bear and Three Balls
- 【矩阵相关】[Codeforces - 736D]Permutations
- Codeforces 815B. Karen and Test 【规律】
- codeforces-892B Wrath
- codeforces 464B Restore Cube 暴力
- Codeforces 335C Sorting Railway Cars
- CodeForces 131B Opposites Attract
- Codeforces 752D Santa Claus and a Palindrome map应用
- Codeforces 741B Arpa's weak amphitheater and Mehrdad's valuable Hoses
- You're Given a String... CodeForces - 23A
- Codeforces 264 C. Choosing Balls
- 贪心练习 again (codeforces 系列)
- Codeforces 261B
- Codeforces 750C New Year And Rating 二分判定
- CodeForces - 682B 题意水题