全部评论
我只过了第二道,第三道觉得题目有问题,感觉凉凉
求第一道ac解法。。
http://acm.fzu.edu.cn/problem.php?pid=2163 算了,原来都是ACM题,罢了罢了。。
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; }
妈的,我当时没有注意,三道题都看了一遍,感觉还行。做的时候就是先做多米洛牌,结果刚保存还没有运行,时间到了,相当于一道题也没有这,就是把一道题的答案保存还没有运行调试,凉了,我是不是选错题了,先做其他的
相关推荐
点赞 评论 收藏
分享