日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HDU 2242 双连通分量 考研路茫茫——空调教室

發(fā)布時間:2023/12/10 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HDU 2242 双连通分量 考研路茫茫——空调教室 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

思路就是求邊雙連通分量,然后縮點,再用樹形DP搞一下。

代碼和求強連通很類似,有點神奇,=_=,慢慢消化吧

1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 #include <vector> 5 #include <stack> 6 using namespace std; 7 8 const int maxn = 10000 + 10; 9 const int maxm = 20000 + 10; 10 11 int n, m; 12 int a[maxn]; 13 14 struct Edge 15 { 16 int v, nxt; 17 }edges[maxm * 2]; 18 int ecnt; 19 int head[maxn]; 20 21 bool vis[maxn]; 22 23 void AddEdge(int u, int v) 24 { 25 edges[ecnt].v = v; 26 edges[ecnt].nxt = head[u]; 27 head[u] = ecnt++; 28 } 29 30 stack<int> S; 31 int dfs_clock, scc_cnt; 32 int low[maxn], pre[maxn], sccno[maxn], w[maxn]; 33 34 void dfs(int u, int fa) 35 { 36 low[u] = pre[u] = ++dfs_clock; 37 S.push(u); 38 39 for(int i = head[u]; ~i; i = edges[i].nxt) 40 { 41 if(i == (fa ^ 1)) continue; 42 int v = edges[i].v; 43 if(!pre[v]) 44 { 45 dfs(v, i); 46 low[u] = min(low[u], low[v]); 47 } 48 else if(!sccno[v]) low[u] = min(low[u], pre[v]); 49 } 50 51 if(pre[u] == low[u]) 52 { 53 scc_cnt++; 54 for(;;) 55 { 56 int x = S.top(); S.pop(); 57 sccno[x] = scc_cnt; 58 w[scc_cnt] += a[x]; 59 if(x == u) break; 60 } 61 } 62 } 63 64 void find_scc() 65 { 66 scc_cnt = dfs_clock = 0; 67 memset(w, 0, sizeof(w)); 68 memset(pre, 0, sizeof(pre)); 69 memset(sccno, 0, sizeof(sccno)); 70 for(int i = 0; i < n; i++) if(!pre[i]) dfs(i, -1); 71 } 72 73 vector<int> G[maxn]; 74 75 void dfs2(int u) 76 { 77 vis[u] = true; 78 for(int i = 0; i < G[u].size(); i++) 79 { 80 int v = G[u][i]; 81 if(vis[v]) continue; 82 dfs2(v); 83 w[u] += w[v]; 84 } 85 } 86 87 int main() 88 { 89 while(scanf("%d%d", &n, &m) == 2 && n) 90 { 91 int sum = 0; 92 for(int i = 0; i < n; i++) { scanf("%d", a + i); sum += a[i]; } 93 94 memset(head, -1, sizeof(head)); 95 ecnt = 0; 96 97 while(m--) 98 { 99 int u, v; scanf("%d%d", &u, &v); 100 AddEdge(u, v); AddEdge(v, u); 101 } 102 103 find_scc(); 104 105 if(scc_cnt == 1) { puts("impossible"); continue; } 106 107 for(int i = 1; i <= scc_cnt; i++) G[i].clear(); 108 for(int u = 0; u < n; u++) 109 for(int i = head[u]; ~i; i = edges[i].nxt) 110 { 111 int v = edges[i].v; 112 if(sccno[u] != sccno[v]) G[sccno[u]].push_back(sccno[v]); 113 } 114 115 memset(vis, false, sizeof(vis)); 116 dfs2(1); 117 118 int ans = 1000000000; 119 for(int i = 1; i <= scc_cnt; i++) ans = min(ans, abs(sum - w[i] * 2)); 120 printf("%d\n", ans); 121 } 122 123 return 0; 124 } 代碼君

?

轉(zhuǎn)載于:https://www.cnblogs.com/AOQNRMGYXLMV/p/4721540.html

總結(jié)

以上是生活随笔為你收集整理的HDU 2242 双连通分量 考研路茫茫——空调教室的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美黑人粗大 | www.好了av | 欧美 日韩 国产 一区二区三区 | 99精品视频一区二区三区 | 噼里啪啦免费看 | 波多野结衣中文字幕久久 | www激情 | 91射区 | 国产91精品看黄网站在线观看 | 国产精品va在线观看无码 | 91看片网页版 | 久久66热这里只有精品 | 91精品国产一区二区三区蜜臀 | 1000部做爰免费视频 | 自拍偷拍麻豆 | 久久久久久久久久久91 | 孕妇丨91丨九色 | 黄色在线小视频 | 午夜视频在线观看国产 | 91秘密入口 | 亚洲精品www久久久久久广东 | 午夜视频在线免费看 | 国精品无码人妻一区二区三区 | 国产中文一区二区三区 | 午夜不卡影院 | aaa一级黄色片 | 久99| 韩国三级久久 | 豆花免费跳转入口官网 | 永久免费看片在线观看 | 爱爱视频天天干 | 快色av | а√天堂8资源中文在线 | 草碰在线 | 三级免费毛片 | 亚洲精品视频观看 | 女人扒开屁股让男人捅 | 精品无码一区二区三区爱欲 | 亚洲国产精品成人综合 | 日本一级免费视频 | 四季av一区二区夜夜嗨 | 99蜜桃臀久久久欧美精品网站 | 性猛╳xxx乱大交 | 久久久九九九热 | 久久毛片网站 | 91九色高潮 | 综合网中文字幕 | 久久国产二区 | 很污的网站 | 华丽的外出在线观看 | 美女一区 | 欧美有码在线 | 久久久久久久久久久国产精品 | 国产1区2区 | 精品国产99 | 日韩av在线天堂 | 国产成人精品一区二区三区 | 欧美理论片在线观看 | 国产一区二区片 | 亚洲第一视频在线播放 | 爱福利视频一区 | 男人天堂a | 成人黄色视屏 | аⅴ天堂中文在线网 | 91久久精品国产91久久性色tv | av福利社| 成人va在线观看 | 欧美在线不卡 | 怡红院男人的天堂 | 亚洲一区二区三区在线视频观看 | caoprom在线视频 | 伊人日日夜夜 | 日本中文字幕免费 | 天堂а√在线中文在线新版 | 亚洲精品欧美激情 | 开心激情播播网 | 亚洲黄页网站 | 中文字幕123 | 一级v片| 欧美精品一区二区三区四区 | 一区二区在线 | 日韩国产欧美在线视频 | 欧美一区二区在线免费观看 | 国产51页 | 免费看黄色小视频 | 网站免费在线观看 | 已满18岁免费观看电视连续剧 | 天天射,天天干 | 超清av在线 | 国产激情综合五月久久 | 久久久久麻豆v国产精华液好用吗 | 激情综合站 | 亚洲一二三区在线观看 | 国产综合色视频 | xxxxx69| 先锋影音一区二区三区 | www.久久精品 | 最新日本中文字幕 | 女人脱下裤子让男人桶 |