给出若干大小关系,
然后输出由此能推出的其他大小关系
很明显这个有传递闭包的性质
于是floyed搞过去
#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int>pii;
void Gao()
{
int n=0,m;
bool f[200][200];
memset(f,0,sizeof(f));
map<pii,int> mp;
cin>>m;getchar();
for (int i=0;i<m;i++)
{
char c1,op,c2;
int x,y;
scanf("%c%c%c",&c1,&op,&c2);
getchar();
x=c1-'A'+1;y=c2-'A'+1;
if (op=='>')
swap(x,y);
n=max(n,max(x,y));
mp[make_pair(x,y)]=1;
f[x][y]=true;
}
for (int k=1;k<=n;++k)
for (int i=1;i<=n;++i)
for (int j=1;j<=n;++j)
if (f[i][k]&&f[k][j])
f[i][j]=true;
int num=0;
for (int i=1;i<=n;i++)
{
for (int j=1;j<=n;j++)
{
if (f[i][j]&&mp.find(make_pair(i,j))==mp.end())
printf("%c<%c\n",'A'+i-1,'A'+j-1),num++;
}
}
if (num==0)
{
cout<<"NONE"<<endl;
}
}
int main()
{
int T,cas=1;
cin>>T;
while (T--)
{
printf("Case %d:\n",cas++);
Gao();
}
return 0;
}