思路:(1)建立n个表存储关系对,对于关系对(i,j)i在list[j]中j在list[i]中
(2)寻找等价类
时间复杂度为:O(n)
int main()
{
int n; int r;
cout << "输入元素个数" << endl;
cin >> n;
if(n<2)
{
cout << "元素个数太小" << endl;
return 1;
}
cout << "输入关系个数" << endl;
cin >> r;
if (r<2)
{
cout << "元素关系个数太小" << endl;
return 1;
}
//建立空栈数组,stack[0]不用
stack<int> *list = new stack<int>[n + 1];
int a, b;
//输入r个关系,存储在表中
for (int i = 1; i <= r; i++)
{
cout << "输入关系:" << endl;
cin >> a >> b;
list[a].push(b);
list[b].push(a);
}
//输出等价类
stack<int> unproceedList;//建立一个整型栈,里边用来存储寻找等价类元素时的值
bool *out = new bool[n + 1];//作为标记,当out[i]对应的元素已经作为某个等价类的元素输出时值为true
for (int i &#