質問の意味:
図は、アルカン基の化学構造である、アルカン基は、6個の原子番号の組で、1〜6の番号を付け、6個の原子と化学結合5を有し、bが原子と原子Bとの間の化学結合を表します。
このように、数字の5対とアルカンの基を表してもよいです。私たちの使命は、パラフィン系のカテゴリー(図5)をスクリーニングすることです。原子のない特定の基準例えば(1,2)等の手段、(2,3)、(3,4)、(4,5)、(5,6)及び(1,3)、(2,3)、 (2,4)、(4,5)、(5,6)が本質的に同じである、アルカン基です。
入力:
グループの数T(1≤T≤200000)最初の行動データを入力します。二つの整数、B(1≤a、b≤6、5本の各データ線 ≤b)。
データ保証は、アルカニルは、5つ以上のいずれかを入力します。
簡単な入力:2
1 2
2 3
3 4
4 5
5 6
1 4
2 3
3 4
4 5
5 6
出力:
データの各セット、出力ライン、代表アルカニルの英語名
シンプルな出力:
n-ヘキサン
-3-メチルペンタン
アイデア:
数字のない定型がないので、それは基準点から開始されていない、すなわち、結合はドット間の関係から開始する必要があり、化学結合の数が一定である、アルカニルの異なる種類が発生するため、Aの異なる種類の異なる化学結合の数は原子の原子の、すなわち異なる数は、原子及び少なくとも一つの化学結合、及び化学的に結合し4個の原子までを有するとの間に1個の原子が、我々が作成するので、観察によって見つけることができ、原子アレイの6つの要素は、原子当たりの原子の数は保存し、接続の数は1,2,3,4原子で計算があります。接続の数は、2,2-ジメチルブタンと比較して、4:1の原子の数である場合、4つの接続の数は、接続が存在しないことがある場合には、2,3-ジメチルブタン3 2への原子の数は、ある場合に接続の数2~4の全ての隣接原子数を結ぶ原子の総数は、接続の数は3~1の原子の数である場合原子(接続3の原子数)であり、それは、異なる状況に必要であり、n-ヘキサンました図5に示すように、3-メチルペンタンと比較し、そうでなければ、2-メチルため。
コード:
#include <iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
using namespace std;
void judge(int *num[])
{
int a[7];
memset(a,0,sizeof(int)*7);
for(int i=0;i<5;i++)
{
a[num[i][0]]++;
a[num[i][1]]++;
}
int c[5];
memset(c,0,sizeof(int)*5);
for(int i=1;i<7;i++)
{
int temp=a[i];
c[temp]++;
}
if(c[4]==1)
{
printf("%s\n","2,2-dimethylbutane");
}
if(c[3]==2)
{
printf("%s\n","2,3-dimethylbutane");
}
if(c[2]==4)
{
printf("%s\n","n-hexane");
}
if(c[3]==1)
{
int temp;
for(int i=1;i<=6;i++)
{
if(a[i]==3)
{
temp=i;
break;
}
}
int number=0;
for(int i=0;i<5;i++)
{
if(num[i][0]==temp)
number+=a[num[i][1]];
if(num[i][1]==temp)
number+=a[num[i][0]];
}
if(number==5)
printf("%s\n","3-methylpentane");
else
printf("%s\n","2-methylpentane");
}
}
int main(int argc, char** argv) {
int n;
int**num=new int*[5];
for(int i=0;i<5;i++)
num[i]=new int[2];
scanf("%d",&n);
getchar();
for(int i=0;i<n;i++)
{
for(int i=0;i<5;i++)
{
scanf("%d %d",&num[i][0],&num[i][1]);
getchar();
}
judge(num);
}
return 0;
}