之前考虑到一种情况,
1对8;
2对7;
3对5;
4对6;
即使这种情况下,按照以下程序并没有将1-8的消除,但是,发现,即使是消除了1-8,进而消除了2-7,仍然不能完全的消除全部的“对”;
所以,以下的程序所描述的情况也就是说在头尾之间的必须要有匹配成功才有可能全部消掉,否则不成功,顾此种情况没有纳入考虑中
// Problem#: 1021
// Submission#: 873058
// The source code is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License
// URI: http://creativecommons.org/licenses/by-nc-sa/3.0/
// All Copyright reserved by Informatic Lab of Sun Yat-sen University
#include <iostream>
#include <stack>
#include <map>
#include <ctime>
using namespace std;
int main()
{
int couples_num;
while(cin >> couples_num && couples_num != 0)
{
map<int, int> num;
stack<int> sta;
for(int i = 0; i < couples_num ; ++i)
{
int temp1;
int temp2;
cin >> temp1 >> temp2;
num[temp1] = temp2;
num[temp2] = temp1;
}
for(int j = 1; j <= couples_num * 2; ++j)
{
if(sta.empty())
sta.push(j);
else
{
if(sta.top() == num[j])
sta.pop();
else
sta.push(j);
}
}
if(sta.empty())
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
return 0;
}