POJ 1655 - Balancing Act 树型DP

2014-11-23 22:30:49 ? 作者: ? 浏览: 3

Program:


 #include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#define oo 1000000007  
#define ll long long  
#define pi acos(-1.0)  
#define MAXN 20005  
using namespace std; 
struct node 
{ 
      int x,y,next; 
}line[MAXN*2]; 
int _next[MAXN],n,AnsData,AnsNote; 
bool used[MAXN]; 
void addline(int x,int y,int m) 
{ 
      line[m].next=_next[x],_next[x]=m; 
      line[m].x=x,line[m].y=y; 
      return; 
} 
int dfs(int x) 
{ 
      int k,data=0,num=0,t; 
      k=_next[x]; 
      while (k) 
      { 
            if (!used[line[k].y]) 
            { 
                  used[line[k].y]=true; 
                  t=dfs(line[k].y); 
                  data=max(t,data); 
                  num+=t; 
                  used[line[k].y]=false; 
            } 
            k=line[k].next; 
      } 
      num++; 
      data=max(data,n-num); 
      if ((datax)) 
         AnsNote=x,AnsData=data; 
      return num; 
} 
int main() 
{ 
      int T,i,num;  
      scanf("%d",&T); 
      while (T--) 
      { 
             scanf("%d",&n); 
             memset(_next,0,sizeof(_next)); 
             num=0; 
             for (i=1;i 
 

-->

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: