📄 1233.cpp
字号:
/* This Code is Submitted by wywcgs for Problem 1233 on 2006-03-01 at 14:00:13 */
#include <cstdio>
#include <cstring>
const int L_MAX = 16;
const int N_MAX = 64;
class Map {
public:
int n;
char name[N_MAX][L_MAX];
Map() : n(0) {}
void insert(const char*);
int search(const char*) const;
};
void Map::insert(const char *s) {
strcpy(name[n++], s);
}
int Map::search(const char *s) const {
int i;
for(i = 0; i < n; i++)
if(!strcmp(name[i], s)) return i;
return -1;
}
class Person {
public:
char name[L_MAX], mutated[L_MAX][L_MAX];
Person *parent;
int n;
Person() : parent(NULL), n(0) {}
void init(const char*);
void insert(const char*);
};
void Person::init(const char *s) {
n = 0; strcpy(name, s);
}
void Person::insert(const char *s) {
strcpy(mutated[n++], s);
}
int main()
{
Map cloned;
Person p[N_MAX], *t;
int i, j;
char info[L_MAX], bname[L_MAX], dname[L_MAX], line[1024], *k;
cloned.insert("ADAM");
while(scanf("%s", info) != EOF) {
scanf("%s %*s %s", dname, bname);
int bor = cloned.search(bname), pn = cloned.n;
p[pn].init(dname);
if(gets(line)[0] != 0) {
for(k = line; k[0] == ' '; k++);
while(k[0] != '\0') {
sscanf(k, "%s", info);
k += strlen(info);
if(strcmp(info, "mutating")) p[pn].insert(info);
while(k[0] == ' ') k++;
}
}
if(bor == -1) printf("clone %s from %s has no connection to ADAM\n", dname, bname);
else {
bool vaild = true; int mini;
p[pn].parent = &p[bor];
for(i = 0; i < p[pn].n && vaild; i++)
for(t = p[pn].parent; t != NULL && vaild; t = t->parent)
for(j = 0; j < t->n; j++)
if(!strcmp(t->mutated[j], p[pn].mutated[i])) {
mini = i; vaild = false; break;
}
if(vaild) {
printf("clone %s from %s is consistent and safe\n", dname, bname);
cloned.insert(dname);
} else printf("clone %s from %s was at least twice mutated with %s\n", dname, bname, p[pn].mutated[mini]);
}
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -