只过了三个测试点,实在找不出什么问题了,有比较空闲的大佬给看看吗?qwq
#include <iostream>
#define MAXN 1000001
int n, m, p;
int set[MAXN] = { 0 };
int number_set = 0;
int t1, t2;
int tn1, tn2;
int Find(int tt)
{
return set[tt];
}
void Union(int sn1, int sn2)
{
for (int i = 0; i < n; i++)
{
if (set[i] == sn2)
{
set[i] = sn1;
}
}
}
void solve(void)
{
std::cin >> n >> m >> p;
for (int i = 0; i < m; i++)
{
std::cin >> t1 >> t2;
tn1 = Find(t1);
if (tn1 == 0)
{
number_set++;
set[t1] = number_set;
tn1 = number_set;
}
tn2 = Find(t2);
if (tn2 == 0)
{
number_set++;
set[t2] = number_set;
tn2 = number_set;
}
if (tn1 != tn2)
{
Union((tn1 < tn2) ? tn1 : tn2, (tn1 < tn2) ? tn2 : tn1);
number_set--;
}
}
for (int i = 0; i < p; i++)
{
std::cin >> t1 >> t2;
if (set[t1] == set[t2] && set[t1] != 0)
{
std::cout << "Yes" << std::endl;
}
else
{
std::cout << "No" << std::endl;
}
}
}
int main(void) {
solve();
return 0;
}