https://ac.nowcoder.com/acm/contest/890/H

签到题:就是说了一大段废话。。。然后类似于化学 给你6个点构成的一个图 问你是哪一种

一共5种 建立一个无向图 统计度数 第一个度数全是2
第2 3个特判 第四个2个度数为3
第五个有一个度数为4

#include<algorithm>
#include<iostream>
#include<vector>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<string>
#include<ctime>
#include<map>
#include<stack>
#include<queue>
#include<set>
#include<cstring>
#include<unordered_map>
using namespace std;
const int INF = 0x3f3f3f3f;
typedef long long ll;
typedef long double ld;
const ll maxn = 1e12;
int du[10];
vector<int> g[10];

int main()
{
	int T;
	cin >> T;
	while (T--)
	{
		for (int i = 1; i <= 6; i++)du[i] = 0;
		for (int i = 1; i <= 6; i++)g[i].clear();
		for (int i = 1; i < 6; i++)
		{
			int x, y;
			scanf("%d%d", &x, &y);
			du[x]++;
			du[y]++;
			g[x].push_back(y);
			g[y].push_back(x);
		}
		static int cnt[10];
		for (int i = 1; i <= 4; i++)cnt[i] = 0;
		for (int i = 1; i <= 6; i++)cnt[du[i]]++;//统计每个点度数
		if (cnt[4])puts("2,2-dimethylbutane");//有一个度数为4的点
		else if (cnt[3] == 2)puts("2,3-dimethylbutane");//有2个度数为3的点
		else if (cnt[3] == 0)puts("n-hexane");//只有度数为2的点
		else
		{
			int p = 0;//寻找那个度数为3的点
			for (int i = 1; i <= 6; i++)
				if (du[i] == 3) {
					p = i;
					break;
				}
			int dd = 0;//与这个点相连的点的度数
			for (auto t : g[p])dd += du[t];
			if (dd == 4)puts("2-methylpentane");//度数为4
			else puts("3-methylpentane");
		}
	}
	return 0;
}

愿风指引你的道路,愿你的刀刃永远锋利。