关注
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
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 这个offer值得去吗? #
2645次浏览 52人参与
# 你实习是赚钱了还是亏钱了? #
118005次浏览 644人参与
# 联宝杯大学生创新大赛,你的技术值得产业级答案 #
43146次浏览 496人参与
# 你会因为行情,降低找工作标准吗? #
11238次浏览 118人参与
# 机械人晒出你的简历 #
191236次浏览 1099人参与
# 如果春招能重来,我会___ #
5136次浏览 61人参与
# 实习想申请秋招offer,能不能argue薪资 #
254703次浏览 1319人参与
# 腾讯云智研发工作体验 #
42992次浏览 173人参与
# 面试官拷打AI项目都会问什么? #
2108次浏览 110人参与
# 招银网络求职进展汇总 #
249802次浏览 1120人参与
# 想做Agent可以做哪些岗位? #
2669次浏览 30人参与
# 除了线上,还能去哪些地方投简历 #
3625次浏览 41人参与
# 你觉得最好用的AI编程工具是_ #
1021次浏览 26人参与
# 暑假倒计时,你都干了些啥? #
58901次浏览 314人参与
# 实习第一天,你在干什么 #
4356次浏览 31人参与
# 你和你的mentor相处模式是__ #
6168次浏览 48人参与
# 如何排解工作中的焦虑 #
328629次浏览 2815人参与
# 第一次面试 #
1135553次浏览 13934人参与
# 在国企工作的人,躺平了吗? #
422346次浏览 3990人参与
# 求职你最看重什么? #
166314次浏览 907人参与
# 职场中那些令人叹为观止的八卦 #
108567次浏览 495人参与
查看11道真题和解析