您的位置:首页 > Web前端

Professor John(DP)

2016-03-20 21:27 369 查看

#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 givenbool 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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: