用栈实现
#include<stdio.h>
#include<stdlib.h>
int main() {
int coupleNumber[300000];
int stack[300000];
int n, i, a, b, top;
n = 1;
while (scanf("%d", &n) == 1&&n) {
for (i = 0; i < n; i++) {
scanf("%d %d", &a, &b);
coupleNumber[a] = coupleNumber[b] = i;
}
top = -1; // 栈的值为-1的时候再最底层
stack[++top] = coupleNumber[1];
for (i = 2; i <= 2*n; i++) {
if (stack[top] == coupleNumber[i]) top--; // top-- 表示出栈
else stack[++top] = coupleNumber[i]; // top++表示入栈
}
if (top == -1) printf("Yes\n");
else printf("No\n");
}
return 0;
}