1. 程式人生 > >NOJ-1593:並查集(一)-西工大演算法

NOJ-1593:並查集(一)-西工大演算法

#include <stdio.h>
#include <stdlib.h>

int n, m;
int p[1005];

int find(int i);

int main()
{
    int i;
    int a, b;
    scanf("%d%d", &n, &m);
    for(i = 0; i < n; i++)
    {
        p[i] = i;
    }
    for(i = 0; i < m; i++)
    {
        scanf("%d%d", &a, &b);
        p[find(b)] = find(a);
    }
    scanf("%d%d", &a, &b);
    if(find(a) == find(b))
    {
        printf("Yes\n");
    }
    else
    {
        printf("No\n");
    }
    return 0;
}

int find(int i)
{
    int j = i;
    while(j != p[j])
    {
        j = p[j];
    }
    p[i] = j;
    return j;
}