A. Dice Tower

time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

A dice is a cube, its faces contain distinct integers from 1 to 6 as black points. The sum of numbers at the opposite dice faces always equals 7. Please note that there are only two dice (these dices are mirror of each other) that satisfy the given constraints (both of them are shown on the picture on the left).

A. Dice Tower_第1张图片

Alice and Bob play dice. Alice has built a tower from n dice. We know that in this tower the adjacent dice contact with faces with distinct numbers. Bob wants to uniquely identify the numbers written on the faces of all dice, from which the tower is built. Unfortunately, Bob is looking at the tower from the face, and so he does not see all the numbers on the faces. Bob sees the number on the top of the tower and the numbers on the two adjacent sides (on the right side of the picture shown what Bob sees).

Help Bob, tell whether it is possible to uniquely identify the numbers on the faces of all the dice in the tower, or not.

Input

The first line contains a single integer n (1 ≤ n ≤ 100) — the number of dice in the tower.

The second line contains an integer x (1 ≤ x ≤ 6) — the number Bob sees at the top of the tower. Next n lines contain two space-separated integers each: the i-th line contains numbers ai, bi (1 ≤ ai, bi ≤ 6; ai ≠ bi) — the numbers Bob sees on the two sidelong faces of the i-th dice in the tower.

Consider the dice in the tower indexed from top to bottom from 1 to n. That is, the topmost dice has index 1 (the dice whose top face Bob can see). It is guaranteed that it is possible to make a dice tower that will look as described in the input.

Output

Print "YES" (without the quotes), if it is possible to to uniquely identify the numbers on the faces of all the dice in the tower. If it is impossible, print "NO" (without the quotes).

Sample test(s)
input
3
6
3 2
5 4
2 4
output
YES
input
3
3
2 6
4 1
5 3
output
NO


解题说明:此题的意思是通过给你的这些数推断出筛子每一面的数字,由于题目中交代拼接在一起的两个面数字不能相同,并且告诉了顶面的数字。为了能推断出所有面,必须保证水平面拼接部分的数要么等于顶面的数字,要么等于其相对的数字,只有这样才能够使用拼接的两个面数字相斥的原理。这样想以后,只需要保证外面一圈的数字不含顶面数字和其相对数字即可。

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;

int main()
{
	int n,x,i;
	int flag;
	int a[101],b[101];
	flag=true;
	scanf("%d",&n);
	scanf("%d",&x);
	for(i=0;i<n;i++)
	{
		scanf("%d %d",&a[i],&b[i]);
		if(a[i]==x||a[i]==7-x)
		{
			flag=false;
		}
		if(b[i]==x||b[i]==7-x)
		{
			flag=false;
		}
	}
	if(flag==true)
	{
		printf("YES\n");
	}
	else
	{
		printf("NO\n");
	}
	return 0;
}



你可能感兴趣的:(A. Dice Tower)