关注
B题是 双联通分量,用Tarjan扫一遍,重新建图然后减掉最深的两条路径 void tarjan(int u, int pre) //Tarjan强连通 { vis[u] = true; dfn[u] = low[u] = ++dep; st.push(u); fa[u] = true; for (int i = s[u]; ~i; i = edge[i].nxt) { int v = edge[i].v; if (edge[i].flag == false) continue; edge[i].flag = edge[i ^ 1].flag = false; if (!vis[v]) { tarjan(v, u); low[u] = min(low[u], low[v]); if (dfn[u]<low[v]) { bridge[bri_cnt][0] = u; bridge[bri_cnt++][1] = v; } } else if (fa[v]) low[u] = min(low[u], dfn[v]); } if (dfn[u] == low[u]) { int t; do { id[t = st.top()] = res; st.pop(); fa[t] = false; } while (t != u); res++; } } int dfs(int u, int pre) { int tmp = 0; for (int i = s[u]; ~i; i = edge[i].nxt) { int v = edge[i].v; if (v == pre) continue; int d = dfs(v, u); pre_d = max(pre_d, tmp + d); tmp = max(tmp, d); } return tmp + 1; }
查看原帖
点赞 1
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 有转正机会的小厂实习值得去吗? #
3691次浏览 50人参与
# 工作不开心辞职是唯一出路吗 #
7424次浏览 25人参与
# 开工第一帖 #
5630次浏览 111人参与
# 实习期间如何提升留用概率? #
241085次浏览 1822人参与
# xx岗简历求拷打 #
2162次浏览 25人参与
# 联想求职进展汇总 #
334876次浏览 2220人参与
# 掌握什么AI技能,会为你的求职大大加分 #
2774次浏览 104人参与
# 牛客租房专区 #
158559次浏览 1846人参与
# 非技术er求职现状 #
138918次浏览 821人参与
# 哪些公司开春招了? #
30443次浏览 195人参与
# 金三银四,你有感觉到吗 #
689345次浏览 6076人参与
# 大家每天通勤多久? #
88132次浏览 922人参与
# 如何缓解入职前的焦虑 #
261733次浏览 1468人参与
# 你最讨厌面试被问什么 #
4718次浏览 55人参与
# 秋招有哪些公司要求提前实习 #
109380次浏览 563人参与
# 记录实习开销 #
189173次浏览 1057人参与
# 哪些公司主动和你打招呼? #
78230次浏览 366人参与
# 牛友投递互助,不漏校招机会 #
438705次浏览 5243人参与
# tplink提前批进度交流 #
226363次浏览 1523人参与
# 正在春招的你,也参与了去年秋招吗? #
352893次浏览 2596人参与