タイトル:化学
タイトル説明:
仮定上、アルカン基は、bが原子と原子Bとの間の化学結合を表す数字の組に続いて6個の原子と5つの化学結合、それぞれ6個の原子、参照番号1〜6を有しています。このようにライン5 aで、bがアルカニルとして記述することができます
あなたの仕事は、カテゴリをスクリーニングアルカングループです。
入力:グループの最初の数T(1≤T≤200000)の行動データ入力。5二つの整数、B(1≤a、b≤6、の各データ線 ≤b)
データ保証は、アルカニル、5つ以上のいずれかに入力され
出力:各出力行のデータを、代表的なアルカニル英語名〜
ソリューションの概要:それは小さなアナログでは、アルカン5つの異なるグループの崩壊は、これらの違いによって決定されることがわかりました。まず、二つの他の原子の最大数によって決定することができるn-ヘキサン、2,2- dimethybutane、2,3- dimethybutaneの原子である、後に、他の原子への接続数に応じて判定し、その特定の原子種。例えば3-メチルペンタン及び二つの原子を連結する2つの接続、及び他の一方のみです。
コード:
#include<iostream>
#include<algorithm>
#include<cstdlib>
#include<cstring>
#include<vector>
using namespace std;
int a[6];
int b[6];
int main()
{
int n,x,y;
cin>>n;
while(n--)
{
vector<pair<int,int> > h;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
for(int i=0;i<5;i++)
{
cin>>x>>y;
a[x-1]++;
a[y-1]++;
b[x-1]++;
b[y-1]++;
h.push_back(make_pair(x-1,y-1));
}
sort(a,a+6);
if(a[5]==4)//先在这里判断3种
{
cout<<"2,2-dimethylbutane"<<endl;
continue;
}else if(a[5]==2)
{
cout<<"n-hexane"<<endl;
continue;
}else if(a[5]==a[4])
{
cout<<"2,3-dimethylbutane"<<endl;
continue;
}else//这里判断两种
{
int flag=0;
for(int i=0;i<5;i++)
{
if(b[h[i].first]==3)
{
if(b[h[i].second]==1)
{
flag++;
}
}
if(b[h[i].second]==3)
{
if(b[h[i].first]==1)
{
flag++;
}
}
}
if(flag==2)
{
cout<<"2-methylpentane"<<endl;
continue;
}else
{
cout<<"3-methylpentane"<<endl;
}
}
}
}