⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1233.cpp

📁 这是哈尔滨工业大学acmOJ的源代码
💻 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 + -