题意:
化学很神奇,以下是烷烃基。
假设如上图,这个烷烃基有6个原子和5个化学键,6个原子分别标号1~6,然后用一对数字 a,b 表示原子a和原子b间有一个化学键。这样通过5行a,b可以描述一个烷烃基
你的任务是甄别烷烃基的类别。
原子没有编号方法,比如
1 2
2 3
3 4
4 5
5 6
和
1 3
2 3
2 4
4 5
5 6
是同一种,本质上就是一条链,编号其实是没有关系的,可以在纸上画画就懂了
思路:
如图所示,可以观察到五种烷烃基的表现形式是简单的图,通过输入两个数字表示两个点之间存在边。由于五种烷烃基本身的差异,可以很容易找出判断的方法:
n-hexane: 所有点度数最高为二
2-methylpentane: 存在一个三度顶点,并且与这个三度顶点相连的三个点中只有一个二度顶点,剩下两个为一度顶点
3-methylpentane: 存在一个三度顶点,并且与这个三度顶点相连的三个点中只有一个一度顶点,剩下两个为二度顶点
2,3-dimethylbutane: 存在两个三度顶点
2,2-dimethylbutane: 存在一个四度顶点
为了记录每个点的度数,设立一个一维数组int a[7]来记录1~6号顶点的度数,例如当输入“1, 6”时,a[1]++,a[6]++,1号顶点和6号顶点的度数加一,另外设立一个二维数组int b[5][2]来记录下输入的边,用来得到与与三度顶点相连的点来判断“2-methylpentane”和“3-methylpentane”。
总结:
本题的重点是仔细观察找出差别,能够总结出每个烷烃基各自的特点,针对差别就能进行解题。
代码:
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
int order = 0;
cin >> order;
for (int i = 0; i < order; i++