xjb水过。。。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char s[10005][280];
struct node
{
int cnt;
char str[280];
}ss[10005];
int cmp(const void *a ,const void *b)
{
return strcmp((*(struct node *)a).str,(*(struct node *)b).str);
}
int main()
{
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%s",s[i]);
puts("root");
for(int i=0;i<n;i++)
{
ss[i].cnt=0;
int prej=0;
for(int j=0;s[i][j]!='\0';j++)
{
if(s[i][j]=='\\')
{
char tmp[1100];int tt=1;
tmp[0]='%';
for(int k=prej;k<j;k++)
tmp[tt++]=s[i][k];
for(int k=0;k<tt;k++)
ss[i].str[ss[i].cnt++]=tmp[k];
ss[i].str[ss[i].cnt++]='!';
prej=j+1;
}
}
for(int j=prej;s[i][j]!='\0';j++)
ss[i].str[ss[i].cnt++]=s[i][j];
ss[i].str[ss[i].cnt]='\0';
}
qsort(ss,n,sizeof(ss[0]),cmp);
printf(" ");
int num=1;
for(int j=0;j<ss[0].cnt;j++)
{
if(ss[0].str[j]=='%')continue;
if(ss[0].str[j]=='!')
{
num++;
if(j!=ss[0].cnt-1)
{
puts("");
for(int k=0;k<2*num;k++)
putchar(' ');
}
}
else putchar(ss[0].str[j]);
}
for(int i=1;i<n;i++)
{
if(strcmp(ss[i].str,ss[i-1].str)==0)continue;
int pp=0;num=1;
for(int j=0;j<ss[i-1].cnt;j++)
{
if(ss[i].str[j]!=ss[i-1].str[j])
break;
if(ss[i].str[j]=='!')
{
num++;
pp=j+1;
}
}
puts("");
for(int j=0;j<2*num;j++) putchar(' ');
for(int j=pp;j<ss[i].cnt;j++)
{
if(ss[i].str[j]=='%')continue;
if(ss[i].str[j]=='!')
{
num++;
if(j!=ss[i].cnt-1)
{
puts("");
for(int k=0;k<2*num;k++)
putchar(' ');
}
}
else putchar(ss[i].str[j]);
}
}
puts("");
}