批改 作业 时间。显然有两个问题:
– 数据没有从 IO 读入读出。
– 第一个 dfs 求出的不是最远的端点。
不过我修改了之后目前依然没有通过 SPOJ 的测试。支持 Javascript 的 OJ 也很少,
Codeforces 上 Javascript 的提交也远不如其他语言。
如何在 SPOJ 提交 Javascript?这个链接 下面附了一个 Life, the Universe, and Everything 的 JS 标程。
let vertexLen = parseInt(readline().trim()); // 顶点数
let vertex = new Map(); // 顶点数据集合 map 可以设置键对值 0 1 2 3 4 5 or 1 2 3 4 5 6 or A B C D E F G ... ...
/**
* 设置顶点
* @param {String || Number} v 顶点
*/
const setVertex = v => vertex.set(v, []);
/**
* 设置边
* @param {String || Number} v1 点
* @param {String || Number} v2 点
*/
const setVertexEdge = (v1, v2) => {
vertex.get(v1).push(v2);
vertex.get(v2).push(v1);
};
// 设置点
for (let i = 1; i <= vertexLen; i++) setVertex(i);
// 定义边
let vertexEdge = [[1, 4], [2, 4], [3, 4], [4, 5], [5, 6]];
// 设置边
// for (let i = 0; i < vertexEdge.length; i++)
// setVertexEdge(vertexEdge[i][0], vertexEdge[i][1]);
for (let i = 0; i < vertexLen - 1; i++) {
var edge = readline().trim().split(" ").map(function(x) { return parseInt(x); });
setVertexEdge(edge[0], edge[1]);
}
/**
* dfs
* @param {String || Number} startNode 开始点
*/
const dfs = startNode => {
let visited = new Map(); // 保持和顶点结构一样
let f = startNode;
let z = 0;
for (let i = 1; i <= vertexLen; i++) visited.set(i, false); // 设置访问状态
// dfs 方法
const dfsFunc = (startNode, visited, dep) => {
if (dep > z) {
f = startNode;
z = dep;
}
dep += 1;
visited.set(startNode, true); // 第一个点设置已访问
let get_next = vertex.get(startNode); // 获得顶点的所有临接点
for (let i = 0; i < get_next.length; i++) {
// 循环临接点
let get_elem = get_next[i]; // 得到元素
if (!visited.get(get_elem)) {
dfsFunc(get_elem, visited, dep);
}
}
return z;
};
dfsFunc(startNode, visited, 0);
return f;
};
/**
* dfs
* @param {String || Number} startNode 开始点
*/
const dfs1 = startNode => {
// 记录开始点和父级节点
const dfsFunc = (startNode, parentNode = -1) => {
let z = 0; // 记录长度
let get_next = vertex.get(startNode); // 得到相邻节点
for (let i = 0; i < get_next.length; i++) { // 循环点
let get_elem = get_next[i]; // 得到点
if (get_elem === parentNode) continue; // 如果是父节点 跳过
z = Math.max(z, dfsFunc(get_elem, startNode) + 1); // 递归添加长度
}
return z;
};
return dfsFunc(startNode);
};
let z = dfs(1);
// console.log(z);
let z1 = dfs1(1);
// console.log(z1);
print(z1);
// console.log(vertex);




Alca
Amber
Belleve Invis
Chensiting123
Edward_mj
Fotile96
Hlworld
Kuangbin
Liyaos
Lwins
LYPenny
Mato 完整版
Mikeni2006
Mzry
Nagatsuki
Neko13
Oneplus
Rukata
Seter
Sevenkplus
Sevenzero
Shirleycrow
Vfleaking
wangzhpp
Watashi
WJMZBMR
Wywcgs
XadillaX
Yangzhe
三途川玉子
About.me
Vijos
