TLE求助
#include<bits/stdc++.h>
using namespace std;
struct node{
int id;
string s;
}mp[10000];
int n;
int root;
bool cmp(node A,node B){
if(A.s.size()==B.s.size()){
return A.s<B.s;
}
return A.s.size()<B.s.size();
}
bool chk1();
bool chk2();
int main(){
int qwqwqw=0;
while(1){
if(qwqwqw){
printf("\n");
}
qwqwqw++;
string ss;
n=0;
root=0;
bool qwerty=1;
while(cin>>ss){
if(ss=="()"){
break;
}
else{
n++;
int cnt=0;
for(int i=1;i<ss.find(',');i++){
cnt=cnt*10+(ss[i]-'0');
}
mp[n].id=cnt;
if(ss.find(')')-ss.find(',')==1){
root=mp[n].id;
mp[n].s="";
qwerty=0;
}
else{
string qwe="";
for(int i=ss.find(',')+1;i<ss.find(')');i++){
qwe+=ss[i];
}
mp[n].s=qwe;
}
}
}
if(chk1()||chk2()||qwerty){
printf("not complete");
}
else{
sort(mp+1,mp+1+n,cmp);
for(int i=1;i<=n;i++){
cout<<mp[i].id;
if(i!=n){
printf(" ");
}
}
}
}
return 0;
}
bool chk1(int m){
for(int i=2;i<=n;i++){
if(mp[i].s==mp[i-1].s){
return 1;
}
}
return 0;
}
bool chk2(int m){
set<string>st;
for(int i=1;i<=n;i++){
st.insert(mp[i].s);
}
for(int i=2;i<=n;i++){
if(!st.count(mp[i].s.substr(0,mp[i].s.size()-2))){
return 1;
}
}
return 0;
}