📄 4110483_ac_16ms_228k.cpp
字号:
#include <stdio.h>
#include <map>
#include <algorithm>
using namespace std;
map <int, int> h;
struct node
{
int id;
int id1, id2;
int r1, r2;
}man[101];
int n;
int main()
{
int t, i, j;
int a, b, d, A, B, D;
char c[2], e[2];
int ans;
scanf("%d", &t);
while (t--)
{
scanf("%d", &n);
h.clear();
int cnt = 1;
for (i = 0; i < n; i++)
{
scanf("%d%d%s%d%s", &a, &b, c, &d, e);
if (h[a] == 0) h[a] = cnt++;
if (h[b] == 0) h[b] = cnt++;
if (h[d] == 0) h[d] = cnt++;
A = h[a];B = h[b];D = h[d];
man[A].id = a;
man[B].id = b;
man[D].id = d;
man[A].id1 = B;
man[A].id2 = D;
man[A].r1 = (c[0] == 'Y');
man[A].r2 = (e[0] == 'Y');
}
int c = 0;
int id;
for (i = 1; c < 2 && i <= cnt; i++)
{
for (j = 1; j < cnt; j++)
{
if (i == j)
continue;
if ((man[j].r1 == 1 && man[j].id1 == i) || (man[j].r2 == 1 && man[j].id2 == i))
break;
if ((man[j].r1 == 0 && man[j].id1 != i) || (man[j].r2 == 0 && man[j].id2 != i))
break;
}
if (j == cnt)
{
id = man[i].id;
c++;
}
}
if (c == 1)
printf("%d\n", id);
else
puts("impossible");
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -