如何把n个点n-1条边转换为1棵树
来源:互联网 发布:20式82毫米迫击炮数据 编辑:程序博客网 时间:2024/06/05 14:15
边的数据结构:
class edge{public: int v,u; int next; edge(){v=0;u=0;next=-1;}//next一定要初始化为-1哦};
读入边的要求
#include <iostream>#include <cstdio>#include <cstring>#define maxn 1000using namespace std;void add(int u,int v,int &len);class edge{public: int v,u; int next; edge(){v=0;u=0;next=-1;}//next一定要初始化为-1哦};void dfs(int root,int depth);edge e[maxn*2];//一千个点就有n-1条边,每条边都是无向的所以一共就有2n-2条边int head[maxn];int dep[maxn];bool vis[maxn];int main(){ int n; scanf("%d",&n);//一共n个点 int len(0); memset(head,-1,sizeof(head)); memset(dep,0,sizeof(dep)); for (int k=0;k<n-1;k++) { int u,v; scanf("%d %d",&u,&v); add(u,v,len); }//现在的话树结构已经建立起来了任意一个节点都是可以当做父节点的 // for (int k=head[1];k!=-1;k=e[k].next) // cout<<e[k].v<<" "; memset(vis,0,sizeof(vis));//不管做什么操作前一定要开vis数组否则会出现死循环 dfs(1,1); for (int k=1;k<=n;k++) cout<<dep[k]<<" "; cout<<endl; return 0;}void dfs(int root,int depth){ vis[root]=1; dep[root]=depth; for (int k=head[root];k!=-1;k=e[k].next) if (!vis[e[k].v]) dfs(e[k].v,depth+1); return;}void add(int u,int v,int &len)//就是有两种情况嘛,u为父节点还是v为父节点所以两种情况都要考虑到{ e[len].u=u;e[len].v=v;//head【u】就是以u为父节点的子节点的头结点 //这些操作就是将这条边插到子节点的前面去 e[len].next=head[u];head[u]=len; len++; u=u^v;v=u^v;u=u^v; e[len].v=v;e[len].u=u; e[len].next=head[u];head[u]=len; len++; return;}
0 0
- 如何把n个点n-1条边转换为1棵树
- 求值:1!/n+3!/n*n*n+5!/n*n*n*n*n+....k!/n*n*n*n....n*n(有k个n);
- 生成N个随机数,和为1
- 生成N个随机数,和为1
- 平面上有2N+1个点,如何画一个圆,使得N个点在圆内,N个点在圆外,一个点在圆上
- hdu5424 Rikka with Graph II(n个点n条边的图判哈密顿通路)
- hdu 5424 Rikka with Graph II(n个点n条边的汉弥尔顿路径判定)
- 数轴上从左到右有n个点a[0],a[1]…,a[n-1],给定一根长度为L的绳子,求绳子最多能覆盖其中的几个点。要求算法复杂度为o(n)。
- 数轴上从左到右有n个点a[0],a[1]…,a[n-1],给定一根长度为L的绳子,求绳子最多能覆盖其中的几个点。要求算法复杂度为o(n)。
- n&n-1 n&-n
- n&-n n&n-1
- n个点m条边构成的简单无相连通图个数
- n条直线互不平行且无三线共点的最多交点数max=1+2+……(n-1)=n(n-1)/2
- N个1
- 生成n个1
- hibernate中如何防止N+1条语句查询
- 趣题:2n+1个点中任n个都与同一点相连,则存在一个连接所有点的点
- n条直线最多把平面分割成几部分? n个平面最多把空间分割成几部分?
- 进程间的五种通信方式介绍
- GitHub for windows 使用方法
- 【LoadRunner】OSGI性能测试实例
- Android APP测试的日志文件抓取
- Java Selenium封装--RemoteWebElement
- 如何把n个点n-1条边转换为1棵树
- Java Selenium封装--RemoteWebDriver
- Android 4.0.3 CTS 测试
- popen的用法及与system调用的区别
- linux实用的日志分析脚本
- jenkins 邮件配置
- 安装GeoIP数据库
- dmcms调取获取扩展字段值
- Eclipse安装SVN插件及使用说明