2015年2月12日 星期四

TIOJ 1312 家族

#include <cstdio>
#include <cstdlib>
#include <algorithm>
using namespace std;
int Union[10005];

int FindUnion(int x){
    if(Union[x] == x)
        return x;
    return Union[x] = FindUnion(Union[x]);
}

void SetUnion (int x, int y){
    Union[FindUnion(x)] = FindUnion(y);
}

int main(){
    int n, m, k, x, y;
    while(scanf("%d %d", &n, &m) != EOF){
        for(int i = 1; i <= n; i++)
            Union[i] = i;

        for (int i = 0; i < m; ++i){
            scanf("%d %d", &x, &y);
            SetUnion(x ,y);
        }

        scanf("%d", &k);
        for (int i = 1; i < n; ++i)
            if (FindUnion(i) == FindUnion(k)){
                printf("%d\n", i);
                break;
            }
    }
}

沒有留言:

張貼留言