Professor John(DP)

#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
#include <deque>

const int max_m = 100, N = 'Z' - 'A' + 1;
bool flag[30][30] = { 0 };// if the relations between i and j have been given
bool IsSmall[30][30] = { 0 };//IsSmall[i][j]==true, means i is smaller than j
//bool visited[30][30] = { 0 };
//int n[max_m + 10][2] = { 0 };//store the input
/*void dfs(int i, int j){
if (visited[i][j]) return;

visited[i][j] = true;
scanf("%d", &tests);
int k = 0;
for (k = 0; k < N; ++k){
if (IsSmall[j][k]) dfs(j, k);
}

return;
}*/

int main()
{
int tests = 0;
memset(flag, 0, sizeof(flag));
for (int t = 1; t <= tests; ++t){
int m = 0, i = 0, j = 0, k = 0;
int a = 0, b = 0;
scanf("%d", &m); cin.get();

a = v1 - 'A'; b = v2 - 'A';
memset(IsSmall, 0, sizeof(IsSmall));
char v1, v2, r;
for (i = 0; i < m; ++i){
scanf("%c%c%c", &v1, &r, &v2); cin.get();
n[i][0] = b; n[i][1] = a;
flag[a][b] = flag[b][a] = true;
if (r == '<'){
IsSmall[a][b] = true;
n[i][0] = a; n[i][1] = b;
}
else{
IsSmall[b][a] = true;
}
}

if (IsSmall[i][k] && IsSmall[k][j]) IsSmall[i][j] = true;
/*for (i = 0; i < m; ++i){
if (!visited[i]) dfs(n[i][0], n[i][1]);
}*/
for (i = 0; i < N; ++i)
for (j = 0; j < N; ++j)
for (k = 0; k < N; ++k){
}

printf("Case %d:\n", t);
IsNone = false;
bool IsNone = true;
for (i = 0; i < N; ++i)
for (j = 0; j < N; ++j){
if (i == j) continue;
if (IsSmall[i][j] && !flag[i][j]){
printf("%c<%c\n", 'A' + i, 'A' + j);
}
}
if (IsNone)
}
printf("NONE\n");

}
return 0;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值