Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
ac的代码,有没有时间少的代码,小弟想学习一下!谢谢了!!!!#include <stdio.h> #include <stdlib.h> int p[30010], rank[30010], m, n; int find(int x){ if(p[x] != x) p[x] = find(p[x]); return p[x]; } void make(int a, int b){ int min, max; a = find(a); b = find(b); min = a > b ? b : a; max = a > b ? a : b; p[max] = min; } int cmp(const void* a, const void* b){ return *(int*)a - *(int*)b; } int main(){ int i, j, k, a, b; while(scanf("%d%d", &n, &m), n || m){ for(i = 0; i <= n; i++) p[i] = i; for(i = 0; i < m; i++){ scanf("%d", &k); for(j = 0; j < k; j++){ scanf("%d", &a); if(j)make(b, a); b = a; } } for(i = 0; i < n; i++)find(i); qsort(p, n + 1, sizeof(p[0]), cmp);n = 0; m = 0; while(!p[n++])m++; printf("%d\n", m); } return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator