hdu 3290 (简单dfs)
来源:互联网 发布:java poi 自动列宽 编辑:程序博客网 时间:2024/06/05 20:57
题意:没有儿子的节点所结苹果数是节点的编号,有儿子的所结苹果是儿子数量(k+1)/2个,求跟节点的苹果数
直接递归一下,先求出所有儿子的苹果树,在排序,,刚开始以为1就是根节点,根节点不确定,,
#include<stdio.h>#include<string.h>#include<stdlib.h>const int N=20010;int w[N],vis[N],head[N],num,p[N];struct edge{int st,ed,next;}e[N*4];int cmp(void const *a,void const *b){return *(int *)a-*(int *)b;}void addedge(int x,int y){e[num].st=x;e[num].ed=y;e[num].next=head[x];head[x]=num++;}int dfs(int u){w[u]=u;int i,j=0;for(i=head[u];i!=-1;i=e[i].next)dfs(e[i].ed);for(i=head[u];i!=-1;i=e[i].next)p[j++]=w[e[i].ed];if(j>0){ qsort(p,j,sizeof(p[0]),cmp); w[u]=p[(j+1)/2-1];}return w[u];}int main(){int i,x,n,m;while(scanf("%d",&n)!=-1){memset(head,-1,sizeof(head));num=0;memset(w,0,sizeof(w));memset(vis,0,sizeof(vis));for(i=1;i<=n;i++){scanf("%d",&m);while(m--){scanf("%d",&x);addedge(i,x);vis[x]=1;}}for(i=1;i<=n;i++){if(vis[i]==0) printf("%d\n",dfs(i));}}return 0;}
- hdu 3290 (简单dfs)
- HDU-1213(简单DFS)
- hdu 2660 简单 dfs
- hdu 3274 简单 dfs
- hdu 1241 简单dfs
- 搜索--HDU简单DFS
- HDU 1181(简单dfs)
- HDU--1241 简单DFS
- HDU 1016 超简单DFS
- HDU 3368 Reversi (简单dfs)
- HDU/HDOJ 1016 简单dfs
- HDU 1241 简单的DFS
- HDU-5546(简单DFS)
- hdu 2212 dfs 简单的思维问题
- hdu 1241 Oil Deposits 简单dfs
- hdu 1312 Red and Black (简单dfs)
- HDU--1312 -- Red and Black [简单DFS]
- 简单dfs hdu 4536 XCOM Enemy Unknown
- Spring IoC
- install parse failed no certificates
- 聊聊并发(六)——ConcurrentLinkedQueue的实现原理分析
- QT 5.10+MinGW4.8 程序的静态编译
- java--ThreadPool线程池简单用法
- hdu 3290 (简单dfs)
- hdu4714 Tree2cycle
- [问题]python的转义的一个疑问
- 多进程
- HDU 1542 Atlantis(线段树+离散化+扫描线)
- POJ 1939求各相邻两点中心的坐标
- leetcode之Longest Palindromic Substring
- Qt Creator 中使用svn进行版本管理
- wiki轨迹