hihicoder 1192 : 简单的树嵌入 搜索
来源:互联网 发布:淘宝待评价怎么评价 编辑:程序博客网 时间:2024/04/25 04:12
#1192 : 简单的树嵌入
时间限制:10000ms
单点时限:1000ms
内存限制:256MB
- 样例输入
30 11 2
- 样例输出
20 01 01 1
描述
给定一棵n个点的无权树。定义两点i, j(0 ≤ i, j ≤ n - 1)间的距离d(i, j)为两点间树上最短路径的长度(边数)。
我们需要将这n个点映射到中的向量v0 = (v0, 0, ..., v0, m - 1), ..., vn - 1 = (vn - 1, 0, ..., vn - 1, m - 1)。定义两向量vi, vj间的L1距离为
我们希望对于所有0 ≤ i, j ≤ n - 1有d(i, j) = d1(vi, vj)。
输入
第一行n。下面n - 1行,其中第i行为两个空格分开的整数xi, yi,表示点xi和yi间有一条边。
n ≤ 100. 0 ≤ xi, yi ≤ n - 1.
输出
第一行m。下面n行,其中第i行为m个空格分开的整数vi - 1, 0, ..., vi - 1, m - 1。
要求m ≤ 100且 - 100 ≤ vi, j ≤ 100。并且,对于所有0 ≤ i, j ≤ n - 1,d(i, j) = d1(vi, vj)。
如果有多解,输出任意一组满足要求的解即可。
由于m可以自已定,且m最大是100,只需要把每个点,放在以根为基础,接下来与兄弟结点不同的位置处,其距离,自然就是相等的。
如根用0,子结点第一个为01第二个为001第三个为0001等等,先用宽搜得到个数,再用深搜确定解,就可以了。
#define N 205#define M 100005#define maxn 205#define MOD 1000000000000000007int n,a,b,vis[N],d[N];vector<int> p[N],ans[N];queue<int> q;int num = 0;void BFS(){ while(!q.empty())q.pop(); num = 0; q.push(0);vis[0] = 0; while(!q.empty()){ int top = q.front();q.pop(); vis[top] = num++; FI(p[top].size()){ if(vis[p[top][i]]== -1){ vis[p[top][i]] = 0; q.push(p[top][i]); } } }}void DFS(int top,int fa){ while(ans[top].size() < vis[top]){ ans[top].push_back(0); } ans[top].push_back(1); d[top] = 0; FI(p[top].size()){ int g = p[top][i]; if(d[g] == -1){ FJ(ans[top].size()) ans[g].push_back(ans[top][j]); DFS(g,top); } }}int main(){ while(S(n)!=EOF) { fill(vis,-1); FI(n)ans[i].clear(),p[i].clear(); FI(n-1){ S2(a,b); p[a].push_back(b); p[b].push_back(a); } BFS(); fill(d,-1); DFS(0,-1); printf("%d\n",num - 1); FI(n){ bool isFirst = true; for(int j = 1;j<ans[i].size();j++){ if(isFirst) printf("%d",ans[i][j]),isFirst = false; else printf(" %d",ans[i][j]); } for(int j = ans[i].size();j<num;j++){ if(isFirst) printf("0"),isFirst = false; else printf(" 0"); } printf("\n"); } } return 0;}
0 0
- hihicoder 1192 : 简单的树嵌入 搜索
- 百度搜索的嵌入代码
- 百度搜索的嵌入代码
- flex 嵌入简单的html
- Hihicoder 题目1 : Trie树 经典字典树
- hihicoder 1251
- hihocoder 1192 简单的树嵌入 (树上DFS 构造 好题)
- hiho1192 简单的树嵌入(构造题)
- Android简单的反编译嵌入例子
- C# 嵌入数据库SQLite的简单用法
- 利用google的接口在网站嵌入搜索
- 怎样在自己的网页中嵌入百度搜索功能
- 在自己的网站嵌入google搜索代码
- 在自己的页面中嵌入百度搜索
- easyui datagrid 如何嵌入以toolbar形式的搜索功能
- 简单二叉搜索树的JAVA实现。
- 搜索二叉树的简单实现
- 一个简单的二叉搜索树实现
- python安装
- E - Easy Task --- (fisrt qualifying)
- 生成MyEclipse6.5&7.5&8.0注册码的java源码
- Android编程权威指南-第一章挑战练习二:添加后退按钮
- STL使用概述
- hihicoder 1192 : 简单的树嵌入 搜索
- HTML5
- Windows启动过程详解
- zookeeper无法启动"Unable to load database on disk"
- Flood Fill Image
- Object-C 面向对象的三大特征
- JVM 进阶 三 基本垃圾回收算法
- Notification 的使用
- 黑马程序员-IOS基础之OC内存管理