POJ 1694 C++ (排序)
当前位置:以往代写 > C/C++ 教程 >POJ 1694 C++ (排序)
2019-06-13

POJ 1694 C++ (排序)

POJ 1694 C++ (排序)

//不会敲,是偶看过别人的结题陈诉后敲的,进修下

#include<iostream>
#include<algorithm>
using namespace std;
typedef struct Node
{ int label;
  int cnt;
  int leaf[200];
};
Node tree[200];
int solve(int i)
{  int stone[200],result,temp;
  if(tree[i].cnt==0)
    return 1;
   for(int j=0;j<tree[i].cnt;j++)
     stone[j]=solve(tree[i].leaf[j]);
   sort(stone,stone+tree[i].cnt);
   result=stone[tree[i].cnt-1];
   temp=result-1;
   for(int k=tree[i].cnt-2;k>=0;k--)
    { if(temp-stone[k]>=0)
       temp--;
      else
       {result=result+stone[k]-temp;
       temp=stone[k]-1;
       }
     }
    return result;
}
int main()
{ int n,m;
 freopen("in.txt","r",stdin);
 freopen("out.txt","w",stdout);
 scanf("%d",&n);
 while(n--)
    { scanf("%d",&m);
     for(int i=1;i<=m;i++)
       { scanf("%d%d",&tree[i].label,&tree[i].cnt);
        for(int j=0;j<tree[i].cnt;j++)
          scanf("%d",&tree[i].leaf[j]);
       }
     printf("%d\n",solve(1));
    }
  return 0;
}

    关键字:

在线提交作业