Qiuqiqiu  
不管道路多么崎岖坎坷,我永远不停下追逐梦想的脚步!

http://acm.hdu.edu.cn/showproblem.php?pid=3290

DFS递归就行了 G++提交TLE C++提交AC了 有些神奇

我的代码
 1 #include <cstdio>
2 #include <cstring>
3 #include <cstdlib>
4 #include <vector>
5 using namespace std;
6 const int N=20010;
7 vector<int> c[N];
8 int w[N],n,cw[N],vis[N];
9 int cmp(const void *a,const void *b)
10 {
11 return *(int*)a-*(int*)b;
12 }
13 int apple(int x)
14 {
15 if (w[x]) return w[x];
16 int m=c[x].size();
17 for (int i=0;i<m;i++) apple(c[x][i]);
18 for (int i=0;i<m;i++) cw[i]=w[c[x][i]];
19 qsort(cw,m,sizeof(cw[0]),cmp);
20 return w[x]=cw[(m+1)/2-1];
21 }
22 int main()
23 {
24 while (scanf("%d",&n)!=EOF)
25 {
26 memset(w,0,sizeof(w));
27 memset(vis,0,sizeof(vis));
28 for (int i=1;i<=n;i++)
29 {
30 c[i].clear();
31 int m,a;
32 scanf("%d",&m);
33 for (int j=1;j<=m;j++)
34 {
35 scanf("%d",&a);
36 c[i].push_back(a);
37 vis[a]=1;
38 }
39 if (m==0) w[i]=i;
40 }
41 for (int i=1;i<=n;i++)
42 if (!vis[i]) printf("%d\n",apple(i));
43 }
44 return 0;
45 }

 

posted on 2011-12-25 12:31  Qiuqiqiu  阅读(292)  评论(2编辑  收藏  举报