程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> POJ 1694 C++ (排序)

POJ 1694 C++ (排序)

編輯:關於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;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved