直接暴力if,反正只要判断三个面就行了
要是想写的漂亮点可以排个序判断,套个循环读入什么的
#include <stdio.h>
int main()
{
struct rec
{
int x;
int y;
}a, b, c, d, e, f, g[6];
int i, j;
while( scanf("%d",&a.x) != EOF )
{
scanf("%d",&a.y);
scanf("%d%d",&b.x,&b.y);
scanf("%d%d",&c.x,&c.y);
scanf("%d%d",&d.x,&d.y);
scanf("%d%d",&e.x,&e.y);
scanf("%d%d",&f.x,&f.y);
g[0] = a;
g[1] = b;
g[2] = c;
g[3] = d;
g[4] = e;
g[5] = f;
int num = 0;
for(i = 0; i < 6; i += 2)
for(j = i + 1; j <6; j++)
{
if( (g[i].x == g[j].x&&g[i].y==g[j].y)||(g[i].y==g[j].x&&g[i].x==g[j].y))
{
struct rec m = g[i+1];
g[i+1] = g[j];
g[j] = m;
num++;
break;
}
}
if( num != 3 )
{
printf("IMPOSSIBLE\n");
continue;
}
if(g[0].x == g[2].x && ((g[0].y==g[4].x&&g[2].y==g[4].y)||(g[0].y==g[4].y&&g[2].y==g[4].x)))
{
printf("POSSIBLE\n");
continue;
}
if(g[0].x == g[2].y && ((g[0].y==g[4].x&&g[2].x==g[4].y)||(g[0].y==g[4].y&&g[2].x==g[4].x)))
{
printf("POSSIBLE\n");
continue;
}
if(g[0].y == g[2].y && ((g[0].x==g[4].x&&g[2].x==g[4].y)||(g[0].x==g[4].y&&g[2].x==g[4].x)))
{
printf("POSSIBLE\n");
continue;
}
if(g[0].y == g[2].x && ((g[0].x==g[4].x&&g[2].y==g[4].y)||(g[0].x==g[4].y&&g[2].y==g[4].x)))
{
printf("POSSIBLE\n");
continue;
}
printf("IMPOSSIBLE\n");
}
return 0;
}