Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

再一次求神牛帮助,这个代码WA在哪

Posted by 0906404008 at 2011-06-05 15:27:12 on Problem 3659
#include<iostream>
#include<string.h>
#include<stdio.h>
#include<vector>
using namespace std;
vector<int>edge[10001],f[10001];
bool used[10001],leaf[10001],visit[10001];
int dproot[10001],all[10001];
void DFS(int t)
{
	int i,u;
	used[t]=true;
	for(i=0;i<f[t].size();i++)
	{ 
		u=f[t][i];
	   if(!used[u])
	   {
		   edge[t].push_back(u);
		   leaf[t]=false;
		   visit[u]=true;
		   DFS(u);
	   }
	}
}
void solve(int root)
{
   int i,minnode=0;
   visit[root]=true;
   if(leaf[root])
   {
      dproot[root]=1;
	  all[root]=0;
	  return ;
   }
   for(i=0;i<edge[root].size();i++)
   {
      int v=edge[root][i];
      if(!visit[v])
		  solve(v);
	  dproot[root]+=all[v];
	  minnode+=dproot[v];
   }
   dproot[root]+=1;
   all[root]=min(dproot[root],minnode);
}
int main()
{
    int n,i,j,k,u,v,temp;
	while(cin>>n)
	{
		for(i=1;i<=n;i++)
		{
			edge[i].clear();
			f[i].clear();
		}
		memset(used,0,sizeof(used));
		memset(leaf,true,sizeof(leaf));
		memset(all,0,sizeof(all));
		memset(dproot,0,sizeof(dproot));
		memset(visit,false,sizeof(visit));
		for(i=1;i<n;i++)
		{
		   //cin>>u>>v;
			scanf("%d %d",&u,&v);
		   f[u].push_back(v);
		   f[v].push_back(u);
		}
	DFS(1);
    for(i=1;i<=n;i++)
	{
	    if(!visit[i])
		{  
			temp=i;
			break;
		}
	}
	memset(visit,false,sizeof(visit));
	solve(temp);
	cout<<all[temp]<<endl;
	}
	return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator