代码拉取完成,页面将自动刷新
一个没有固定根结点的树称为无根树 无根树有几种等价的形式化定义:
在无根树的基础上,指定一个结点称为根,则形成一棵有根树
https://oi-wiki.org//graph/tree-basic/
int u, v;
int n = 5;
int edge = n - 1;
while(edge--){
cin >> u >> v;
v[u].push_back(v);
v[v].push_back(u);
}
int head[N], ne[N], to[N], we[N], idx;
void add(int u, int v, int w){
we[idx] = w;
to[idx] = v;
ne[idx] = head[u];
head[u] = idx++;
}
int u, v, w;
int n = 5;
int edge = n - 1;
while(edge--){
cin >> u >> v >> w;
add(u, v, w);
add(v, u, w);
}
void dfs(int u, int pre){
for(int i = 0; i < edge[u].size(); ++i){
int v = edge[u][i];
if(v != pre){
dfs(v, u);
}
}
// for(auto v : edge[u]){
// if(v != pre){
// dfs(v, u);
// }
// }
cout << a[u] << endl;
}
void dfs(int u, int pre){
for(int i = head[u]; i != -1; i = ne[i]){
int v = to[i];
int w = we[i];
if(v != pre){
dfs(v, u);
}
}
cout << a[u] << endl;
}
void dfs(int depth){
if(depth > n){
for(int i = 1; i <= n; ++i) printf("%d ", a[i]);
puts("");
return;
}
for(int i = 1; i <= n; ++i){
if(!isUsed[i]){
isUsed[i] = true;
a[depth] = i;
dfs(depth + 1);
isUsed[i] = false;
}
}
}
函数:next_permutation(st, ed);
bfs(广度优先搜索)
void bfs(int u){
queue<int> q;
q.push(u);
isVisit[u] = true;
while(!q.empty()){
u = q.front();
q.pop();
printf("%d ", u);
for(auto v : edge[u]){
if(!isVisit[v]){
isVisit[v] = true;
q.push(v);
}
}
}
}
while(!q.empty()){
//起点
for(int i = 0; i < 4; ++i){//四个方向
x = //起点x + dx[i];
y = //起点y + dy[i];
if( <= x && x <= && <= y && y <= ){//边界
if(!isVisit[x][y]){
//标记并放入队列
}
}
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。