多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > php開源 > php教程 > bzoj 1023 仙人掌圖

bzoj 1023 仙人掌圖

來源:程序員人生   發(fā)布時(shí)間:2015-03-10 08:29:06 閱讀次數(shù):3163次

Description

求1個(gè)神仙掌圖的直徑

Solution

神仙掌圖有個(gè)性質(zhì),1條邊要末是割邊要末就是在環(huán)內(nèi),那末我們可以對(duì)它進(jìn)行Dp辣!

f[u]u長(zhǎng)長(zhǎng)

如果u?v是橋的話轉(zhuǎn)移就是ans=max(ans,f[u]+f[v]+1),f[u]=max(f[u],f[v]+1),由于當(dāng)前f[u]都是由它的孩子更新來的

如果是環(huán)的話,變環(huán)為鏈,用單調(diào)隊(duì)列dp出ans,然后用環(huán)上的f值更新f[u]的值就能夠了,具體實(shí)現(xiàn)見代碼

Code

#include <bits/stdc++.h> using namespace std; const int N = 100005, M = N << 1; int ans, ind, tot, cnt, fa[N], cir[N << 1], to[M << 1], nxt[M << 1], head[N], dfn[N], low[N], f[N]; inline int read(int &t) { int f = 1;char c; while (c = getchar(), c < '0' || c > '9') if (c == '-') f = -1; t = c - '0'; while (c = getchar(), c >= '0' && c <= '9') t = t * 10 + c - '0'; t *= f; } struct data { int p, w; }q[N]; void add(int u, int v) { to[tot] = v, nxt[tot] = head[u], head[u] = tot++; to[tot] = u, nxt[tot] = head[v], head[v] = tot++; } void gao() { int h = 1, r = 1; for (int i = 1; i <= cnt; ++i) cir[cnt + i] = cir[i]; for (int i = 1; i <= (cnt << 1); ++i) { while (h < r && i - q[h].p > cnt / 2) ++h; while (h < r && q[r].w <= f[cir[i]] - i) --r; q[++r].p = i, q[r].w = f[cir[i]] - i; ans = max(ans, f[cir[i]] + i + q[h].w); } } void dfs(int u) { low[u] = dfn[u] = ++ind; for (int i = head[u], v; ~i; i = nxt[i]) { v = to[i]; if (fa[v] != 0 && v != fa[u]) low[u] = min(low[u], dfn[v]); if (fa[v] == 0) { fa[v] = u; dfs(v); low[u] = min(low[u], low[v]); } } for (int i = head[u], v; ~i; i = nxt[i]) { v = to[i]; if (fa[v] == u && low[v] > dfn[u]) { //bridge ans = max(ans, f[u] + f[v] + 1); f[u] = max(f[u], f[v] + 1); } if (fa[v] != u && dfn[u] < dfn[v]) { //circle cnt = 0; while (v != fa[u]) cir[++cnt] = v, v = fa[v]; gao(); for (int j = 1; j < cnt; ++j) f[u] = max(f[u], f[cir[j]] + min(j, cnt - j)); } } } int main() { int n, m; memset(head, -1, sizeof(head)); read(n), read(m); for (int i = 1, x, y, z; i <= m; ++i) { read(x), read(y); for (int j = 1; j < x; ++j) { read(z); add(y, z); y = z; } } fa[1] = -1; dfs(1); printf("%d ", ans); return 0; }
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 亚洲人成在线精品不卡网 | 中文字幕无线码中文字幕免费 | 日本欧美视频在线 | 欧洲乱码专区一区二区三区四区 | 色综合久久98天天综合 | 一级日韩| 日韩精品一区二区三区中文字幕 | 国产精品冒白浆免费视频 | 午夜影院免费观看 | a丫久久久久久一级毛片 | 最新国产成人综合在线观看 | 国产日韩一区二区 | 免费观看性行为的视频网站 | 亚洲网站www | 最近中文字幕免费完整 | a级艳片武则天 | 久久国产成人精品国产成人亚洲 | 一级毛片视频在线 | 欧美xx网| 日韩 欧美 亚洲国产 | 午夜爱爱片 | 全国男人天堂网 | 五月天福利视频 | 国产亚洲3p一区二区三区 | 2022在线精品视频网站 | 亚洲国产精品看片在线观看 | 女人18毛片a级18毛多水真多 | 久久本网站受美利坚法律保护 | 国内视频自拍在线视频 | 99久久久国产精品免费牛牛四川 | 精品欧美一区二区三区在线观看 | 老司机午夜精品视频在线观看免费 | 国产一区二区三区国产精品 | 免费的禁片| 国产亚洲成归v人片在线观看 | 福利在线国产 | 最近最新中文字幕大全高清6 | 精品影视网站入口 | 伊人久久综合网站 | 羞羞视频免费看网站 | 在线 | 一区二区三区四区 |