SeedCoder2014热身题目3:解答

来源:互联网 发布:免费网络加速软件 编辑:程序博客网 时间:2024/05/16 04:44
#include<stdio.h>#include<string.h>int N,M,K;int uset[510];void init(){        for(int i=0; i<510; ++i)                uset[i]=i;        return;}int root(int k){        if(k==uset[k])return k;        return uset[k]=root(uset[k]);}int main(){        scanf("%d%d%d", &N, &M, &K);        init();        while(K--){                int A, B;                scanf("%d%d", &A, &B);                A=root(A), B=root(B);                if(A!=B) uset[A]=B;        }        M=root(M);        int ans=0;        for(int i=1; i<=N; ++i){                if(root(i)!=M)                        ++ans;        }        printf("%d\n", ans);        int start=0;        for(int i=1; i<=N; ++i){                if(root(i)!=M){                        if(start)printf(" ");start=1;                        printf("%d", i);                }        }        return 0;}

0 0