记录编号 | 27520 | 评测结果 | AAAAAAAAAA | ||
---|---|---|---|---|---|
题目名称 | [USACO Nov10] 拜访奶牛 | 最终得分 | 100 | ||
用户昵称 | 是否通过 | 通过 | |||
代码语言 | C++ | 运行时间 | 0.070 s | ||
提交时间 | 2011-09-26 19:04:33 | 内存使用 | 1.60 MiB | ||
#include <iostream> #include <cstdlib> #include <cstdio> struct way { int e,pre; }; int n,i,j,x,y,top; int la[50001],f[50001][2]; way a[100001]; int max(int x,int y) { if (x>y) return(x); else return(y); } void dp(int x) { int i; f[x][1]=1; i=la[x]; while (i!=0) { if (f[a[i].e][1]==0) { dp(a[i].e); f[x][1]+=f[a[i].e][0]; f[x][0]+=max(f[a[i].e][0],f[a[i].e][1]); } i=a[i].pre; } } int main() { freopen("vacation.in","r",stdin); freopen("vacation.out","w",stdout); scanf("%d\n",&n); top=0; for (i=1;i<=n;i++) { scanf("%d%d\n",&x,&y); top++; a[top].pre=la[x]; la[x]=top; a[top].e=y; top++; a[top].pre=la[y]; la[y]=top; a[top].e=x; } dp(1); printf("%d\n",max(f[1][0],f[1][1])); return 0; }