#include <iostream>
#include <cstdio>
#include <memory.h>
using namespace std;
const int maxn=30;
int m;
bool g[maxn][maxn],vis[maxn][maxn];
int main(){
int t,cas=1;
scanf("%d",&t);
while (t--){
scanf("%d\n",&m);
memset(g,0,sizeof(g));
memset(vis,0,sizeof(vis));
for (int i=0;i<m;++i){
char u,v,r;
scanf("%c%c%c\n",&u,&r,&v);
u-='A',v-='A';
if(r=='<'){
g[u][v]=1;
vis[u][v]=1;
}
else{
g[v][u]=1;
vis[v][u]=1;
}
}
for (int k=0;k<26;++k){
for (int i=0;i<26;++i){
for (int j=0;j<26;++j){
if(g[i][k]&&g[k][j]){
g[i][j]=1;
}
}
}
}
int f=0;
printf("Case %d:\n",cas++);
for (int i=0;i<26;++i){
for (int j=0;j<26;++j){
if(!vis[i][j]&&g[i][j]){
printf("%c<%c\n",i+'A',j+'A');
f=1;
}
}
}
if(!f)printf("NONE\n");
}
return 0;
}
ZOJ 1589 Professor John(传递闭包)
最新推荐文章于 2014-02-18 22:35:57 发布