亲戚这道题,当n>=20000,m>=106的时候,我的代码该怎么优化?
#include<bits/stdc++.h>
using namespace std;
int n, m ,q, u, v, f[200001];
int fd(int x)
{
while(f[x] != x)
{
x = f[x];
}
return x;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie();
cout.tie();
cin >> n >> m;
for(int i = 1; i <= n; i++)
{
f[i] = i;
}
for(int i = 1; i <= m; i++)
{
cin >> u >> v;
int x = fd(u);
int y = fd(v);
if(x != y)
{
f[y] = x;
}
}
cin >> q;
while(q--)
{
cin >> u >> v;
if(fd(u) == fd(v))
{
cout << "Yes" << "\n";
}
else
{
cout << "No" << "\n";
}
}
}