牛客补题找朋友

281 阅读1分钟

找朋友

并查集

ll fa[50010];

void init()
{
    for (int i = 1; i <= 50000; i++)
        fa[i] = i;
}

ll find(ll a)
{
    if (fa[a] == a)
        return a;
    return fa[a] = find(fa[a]);
}

void mix(ll a, ll b)
{
    ll fa1 = find(a), fb = find(b);
    fa[fb] = fa1;
}

int main()
{
    init();
    ll n, m, p;
    cin >> n >> m >> p;
    for (int i = 1; i <= m; i++)
    {
        ll temp1, temp2;
        cin >> temp1 >> temp2;
        mix(temp1, temp2);
    }
    while (p--)
    {
        ll a, b;
        cin >> a >> b;
        if (find(a) == find(b))
            cout << "Yes\n";
        else
            cout << "No\n";
    }

    return 0;
}