栈的简单应用。
为什么用栈:从环的任意一点断开(形成栈),消去结果和环是一样的。
注意:1、用mark将一对夫妻关联起来,用一维数组即可,比二维节省了许多空间。2、mark的长度是200001而不是100001因为n是夫妻对数。 3、每次循环并不需要将mark清零,因为数据会覆盖。
代码如下:
#include <iostream>
#include <stack>
using namespace std;
int main()
{
int n;
int mark[200001];
while(cin >> n)
{
if (n == 0) break;
stack<int> store;
int k,t;
for (int i = 0;i < n;i ++)
{
cin >> k >> t;
mark[k] = t;
mark[t] = k;
}
for (int i = 1;i <= 2 * n;i ++)
{
if