比赛 20110923 评测结果 AAAWWEEEEE
题目名称 拜访奶牛 最终得分 30
用户昵称 苏轼 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2011-09-23 21:51:39
显示代码纯文本
#include<iostream>
#include<stdio.h>
using namespace std;
int number,q[1000][6],w[1000]={0},used[1000]={0},MAX=0,f[10000]={0};
void dfs(int x);
int main()
{
	freopen("vacation.in","r",stdin);
	freopen("vacation.out","w",stdout);
	cin>>number;
	for (int i=0;i<number-1;i++)
	{
		int a,b;
		cin>>a>>b;
		w[a]++;
		w[b]++;
		q[a][w[a]]=b;
		q[b][w[b]]=a;
	}
	dfs(1);
	used[1]=1;
	dfs(1);
	used[1]=0;
	if (number%2==0)
	{
		cout<<number/2;
	}
	else
	{
		cout<<number/2+1;
	}
	return 0;
}
void dfs(int x)
{
	if (x==number)
	{
		int temp=1;
		for (int i=1;i<=number&&temp;i++)
		{
			for (int j=1;j<=w[i];j++)
			{
				if (used[i]&&used[q[i][w[j]]])
				{
					temp=0;
				}
			}
		}
		if (temp)
		{
			int temp1;
			for (int i=1;i<=number;i++)
			{
				if (used[i])
				{
					temp1++;
				}
			}
			if (MAX<temp1)
			{
				temp1=MAX;
			}
		}
	}
	else
	{
		for (int i=1;i<=w[x];i++)
		{
			if (q[x][i]!=f[x])
			{
				used[q[x][i]]=1;
				f[q[x][i]]=x;
				dfs(q[x][i]);
				used[q[x][i]]=0;
				f[q[x][i]]=0;
			}
		}
	}
}