dfs(顺便求一下每个节点的儿子节点喽)
2016-03-07 20:32
453 查看
先用邻接表存储这棵树(图),(**邻接表相当于链表^_^),然后搜寻每个节点,递归进它的子树,然后就没有然后了……
顺便提供数据O(∩_∩)O哈!
12
1 2 1
1 3 1
1 4 1
3 5 1
3 6 1
4 7 1
5 8 1
6 9 1
7 10 1
8 11 1
10 12 1
3 0 2 1 1 1 1 1 0 1 0 0
顺便提供数据O(∩_∩)O哈!
12
1 2 1
1 3 1
1 4 1
3 5 1
3 6 1
4 7 1
5 8 1
6 9 1
7 10 1
8 11 1
10 12 1
3 0 2 1 1 1 1 1 0 1 0 0
#include<iostream> #include<cstring> using namespace std; const int mn=10000+10,me=2*mn+10; int hd[mn],to[me],nxt[me],w[me],cnt; void add(int x,int y,int z){ to[cnt]=y; w[cnt]=z; nxt[cnt]=hd[x]; hd[x]=cnt++; } int st[mn];//st[]代表每个节点的子树数目 bool vis[mn];//记录每个点是否被访问过,避免重复访问 void dfs(int i){ vis[i]=true; for(int j=hd[i];j!=-1;j=nxt[j]){ if(!vis[to[j]]){ dfs(to[j]);//递归呀递归^_^ st[i]++; } } } int main(){ int n;//n个点 cin>>n; cnt=0; memset(hd,-1,sizeof(hd)); memset(to,0,sizeof(to)); memset(nxt,0,sizeof(nxt)); memset(vis,false,sizeof(vis)); memset(st,0,sizeof(st)); for(int i=1,x,y,z;i<n;i++){ cin>>x>>y>>z; add(x,y,z); } dfs(1); for(int i=1;i<=n;i++) cout<<st[i]<<" "; cout<<endl; return 0; }
相关文章推荐
- Win2003利用dfs(分布式文件系统)在负载均衡下的文件同步配置方案
- win2003分布式文件系统(dfs)配置方法[图文详解]
- win2003分布式文件系统及其部署 图文教程
- Hadoop2.6+jdk8的安装部署(1)——使用jar包安装部署【详细】
- Hadoop FS Shell
- DFS使用方法总结
- FastDFS注意事项
- 无忧技术带您预览DFS(分布式文件系统)管理控制台
- C 语言实现迷宫 DFS算法
- 一幅图弄清DFT与DTFT,DFS的关系
- HDFS---Namenode
- HDFS ---- Services startup
- POJ1523 SPF dfs
- poj1731 Orders dfs
- Surrounded Regions
- Binary Tree Zigzag Level Order Traversal,Restore IP Addresses,Word Search,Simplify Path
- DFS基础(1)
- HDU1241 Oil Deposits
- DFS算法有趣小题目
- ZOJ Problem Set - 1711 解题报告