比赛 |
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;
}
}
}
}