📄 2796973_ac_215ms_712k.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 + -