hihocoder 1192 簡單的樹嵌入 (樹上DFS 構造 好題)
#1192 : 簡單的樹嵌入
時間限制:10000ms
單點時限:1000ms
記憶體限制:256MB
描述
給定一棵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)。
如果有多解,輸出任意一組滿足要求的解即可。
3
0 1
1 2
- 樣例輸出
2
0 0
0 1
1 1
題目連結:http://hihocoder.com/problemset/problem/1192
題目大意:給出一棵樹,要求構造一個矩陣,如果第i個點到第j個點的距離為d(i,j),則矩陣的第i行和第j行對應列的差的絕對值的和要等於d(i,j)
題目分析:構造方法太多,我就寫一下我的構造方法,感覺是最簡單的,直接構造一個n*n的矩陣,對於第i個點,先將其父親那一行復制過來然後再將(i,i)點標記為1即可,其實就相當於用1的個數給樹分層
#include <cstdio>
#include <cstring>
int const MAX = 105;
struct EDGE
{
int v, next;
}e[MAX];
int head[MAX], cnt;
int ans[MAX][MAX];
void Add(int u, int v)
{
e[cnt].v = v;
e[cnt].next = head[u];
head[u] = cnt ++;
}
void DFS(int u, int fa)
{
memcpy(ans[u], ans[fa], sizeof(ans[fa]));
ans[u][u] = 1;
for(int i = head[u]; i != -1; i = e[i].next)
{
int v = e[i].v;
if(v != fa)
DFS(v, u);
}
return;
}
int main()
{
int n;
scanf("%d", &n);
memset(ans, 0, sizeof(ans));
memset(head, -1, sizeof(head));
for(int i = 0; i < n - 1; i++)
{
int u, v;
scanf("%d %d", &u, &v);
Add(u, v);
Add(v, u);
}
DFS(0, 0);
printf("%d\n", n);
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n - 1; j++)
printf("%d ", ans[i][j]);
printf("%d\n", ans[i][n - 1]);
}
}
相關文章
- 機器學習:如何構造一個簡單的決策樹機器學習
- DFS樹
- hihocoder 1260 String Problem I (Trie樹 好題)
- hihocoder trie 樹
- 樹的DFS序
- hihocoder 1041 國慶出遊 (DFS + bitset 好題)
- DFS在二叉樹上的表現二叉樹
- 一個簡單的樹形結構
- 構造二叉樹二叉樹
- 樹上問題/簡單演算法 LCA【最近公共祖先】演算法
- 字典樹(字首樹)簡單實現
- 樹形資料構造的方法
- 機器學習實戰(三)決策樹ID3:樹的構建和簡單分類機器學習
- kd樹的簡單實現
- bzoj3439: Kpm的MC密碼(主席樹+DFS序+字典樹)密碼
- 淺談樹形結構的特性和應用(上):多叉樹,紅黑樹,堆,Trie樹,B樹,B+樹...
- 二叉樹的構造與遍歷二叉樹
- 線段樹簡單思路
- 簡單的線段樹應用
- 一個簡單的樹查詢
- 決策樹減支問題(優化)dfs減支問題優化
- 通過有序線性結構構造AVL樹
- 【模板】樹分塊(簡單版)
- hihocoder 1078 線段樹的區間修改 (線段樹 區間更新 模板)
- 樹上染色(樹形dp)
- 機器學習之使用sklearn構造決策樹模型機器學習模型
- 線索二叉樹的構造和遍歷二叉樹
- 一個簡單的統計問題(解決方案:Trie樹)
- hihocoder 1261 String Problem II (Trie樹)
- hihocoder1224 賽車(樹的深度相關)
- BF的資料結構題單-提高組——樹鏈剖分資料結構
- leetcode 每日一題 543 二叉樹的直徑 dfs方法LeetCode每日一題二叉樹
- 樹的同構
- 從 dfs 序求 lca 到虛樹到樹分塊 學習筆記筆記
- 利用一維陣列構造二叉樹陣列二叉樹
- 從前序與中序構造二叉樹二叉樹
- 388,先序遍歷構造二叉樹二叉樹
- 樹的學習——樹的儲存結構