龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

POJ 1694 C++ (排序)

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
//不会敲,是偶看过别人的结题报告后敲的,学习下 #include #include 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

  //不会敲,是偶看过别人的结题报告后敲的,学习下

#include

#include

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

     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

          scanf("%d",&tree[i].leaf[j]);

       }

     printf("%dn",solve(1));

    }   

  return 0;

}

精彩图集

赞助商链接