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

📄 2796973_ac_215ms_712k.cpp

📁 北大大牛代码 1240道题的原代码 超级权威
💻 CPP
字号:
#include <stdio.h>
#include <list>
#include <queue>
using namespace std;

struct node
{
	char name[21];
	int fa;
	list <int> sub;
}com[10001];

int n;

void print(int t,int n)
{
	int i;
	list <int> ::iterator iter;

	for(i = 0; i < n; i++)
		printf("+");
	puts(com[t].name);
	for(iter = com[t].sub.begin(); iter != com[t].sub.end(); ++iter)
		print(*iter,n+1);
}

int get(char str[])
{
	int i;
	
	for(i = 0; i < n; i++)
		if(strcmp(str,com[i].name)==0)
			return i;
	return -1;
}

void fire(char str[])
{
	int t, p;
	list <int> ::iterator iter;

	t = get(str);
	if(t==-1)
		return ;
	while(!com[t].sub.empty())
	{
		p = *com[t].sub.begin();
		strcpy(com[t].name,com[p].name);
		t = p;
	}
	p = com[t].fa;
	for(iter = com[p].sub.begin(); iter != com[p].sub.end(); ++iter)
		if(*iter == t)
		{
			com[p].sub.erase(iter);
			return ;
		}
}

void hire(char str[])
{
	int t;
	char tmp[21];

	t = get(str);
	scanf("%s",tmp);
	scanf("%s",tmp);
	if(t==-1)
		return ;
	strcpy(com[n].name,tmp);
	com[n].fa = t;
	com[n].sub.clear();
	com[t].sub.push_back(n);
	n++;
}

int main()
{
	char tmp[21];

	n = 1;
	scanf("%s",com[0].name);
	com[0].sub.clear();
	com[0].fa = -1;
	while(scanf("%s",tmp)==1)
	{
		if(strcmp(tmp,"print")==0)
		{
			print(0,0);
			puts("------------------------------------------------------------");
		}
		else
			if(strcmp(tmp,"fire")==0)
			{
				scanf("%s",tmp);
				fire(tmp);
			}
			else
				hire(tmp);
	}
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -