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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

AtCoder AGC033F Adding Edges (图论)

發布時間:2025/3/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AtCoder AGC033F Adding Edges (图论) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

------------恢復內容開始------------

題目鏈接

https://atcoder.jp/contests/agc033/tasks/agc033_f

題解

又被神仙題搞自閉了……
首先讓我們來讀錯題:把題面里的"in some order"改成"in this order"! 似乎變簡單了很多!
顯然一條邊\((u,v)\)會被產生當且僅當在原圖上存在從\(u\)\(v\)的一條路徑,使得這條路徑上的點依次位于樹上的一條路徑上。然后我們可以從每個點開始BFS或DFS確定答案。
但是現在的題意是"in some order", 沒有對路徑上三個點的經過順序進行約束。那么我們考慮把它強行轉化成順序確定的情況。
假設存在\((a,b,c)\)滿足在樹上\(b\)\(a,c\)的路徑上且在圖上\(a,b\)\(a,c\)之間都有連邊,那么把\(a,c\)的連邊去掉,連上\(b,c\)的邊。假設我們這樣操作直到不能操作為止,那么新的圖產生的邊和原圖是一樣的,且新圖加邊過程中三個點在樹的路徑上出現的順序一定和"in this order"保持一致,然后直接采用剛才的做法做即可。
現在考慮如何做上面所說的操作。用\(f[u][v]\)維護以\(u\)為根時如果添加一條\((u,v)\)的邊,那么實際上\(u\)端點會被哪個點替代,然后每次新加一條圖的邊,先把這條邊縮到最短,然后再分別在以\(u\)為根\(v\)子樹內和以\(v\)為根\(u\)子樹內找其他能縮的邊以及更新\(f\),詳見代碼。
復雜度分析:發現我們每遍歷一個點,要么會縮一條邊,要么會使得\(f\)數組里\(f[u][v]=u\)的個數減少\(1\), 故總時間復雜度\(O(n^2+nm)\).

代碼

#include<bits/stdc++.h> #define llong long long #define mkpr make_pair #define pii pair<int,int> #define riterator reverse_iterator using namespace std;inline int read() {int x = 0,f = 1; char ch = getchar();for(;!isdigit(ch);ch=getchar()) {if(ch=='-') f = -1;}for(; isdigit(ch);ch=getchar()) {x = x*10+ch-48;}return x*f; }const int N = 2e3; struct Edge {int v,nxt; } e[(N<<1)+3]; int fe[N+3]; int fa[N+3][N+3]; int f[N+3][N+3]; int n,m,en,ans;void addedge(int u,int v) {en++; e[en].v = v;e[en].nxt = fe[u]; fe[u] = en; }void dfs1(int rt,int u) {for(int i=fe[u]; i; i=e[i].nxt){int v = e[i].v; if(v==fa[rt][u]) continue;fa[rt][v] = u;dfs1(rt,v);} }void addedgeg(int u,int v) {if(f[u][v]==v||f[v][u]==u) {return;} // printf("addedgeg %d %d %d %d\n",u,v,f[u][v],f[v][u]);if(f[u][v]!=u) {addedgeg(f[u][v],v); return;}if(f[v][u]!=v) {addedgeg(u,f[v][u]); return;}f[u][v] = v,f[v][u] = u;vector<pii> ext; queue<int> que;que.push(v);while(!que.empty()){int cu = que.front(); que.pop();for(int i=fe[cu]; i; i=e[i].nxt){int cv = e[i].v; if(cv==fa[u][cu]) continue;if(f[u][cv]==u) {f[u][cv] = v; que.push(cv);}else {ext.push_back(mkpr(v,cv));}}}que.push(u);while(!que.empty()){int cu = que.front(); que.pop();for(int i=fe[cu]; i; i=e[i].nxt){int cv = e[i].v; if(cv==fa[v][cu]) continue;if(f[v][cv]==v) {f[v][cv] = u; que.push(cv);}else {ext.push_back(mkpr(u,cv));}}}for(int i=0; i<ext.size(); i++){addedgeg(ext[i].first,ext[i].second);} }void dfs2(int rt,int u,int prv) {if(u!=rt && f[prv][u]==u) {ans++; prv = u;}for(int i=fe[u]; i; i=e[i].nxt){int v = e[i].v; if(v==fa[rt][u]) continue;dfs2(rt,v,prv);} }int main() {scanf("%d%d",&n,&m);for(int i=1; i<n; i++) {int u,v; scanf("%d%d",&u,&v); addedge(u,v); addedge(v,u);}for(int i=1; i<=n; i++){dfs1(i,i);}for(int i=1; i<=n; i++) for(int j=1; j<=n; j++) f[i][j] = i;for(int i=1; i<=m; i++){int x,y; scanf("%d%d",&x,&y);addedgeg(x,y);}for(int i=1; i<=n; i++){dfs2(i,i,i);}printf("%d\n",ans>>1);return 0; }

------------恢復內容結束------------

總結

以上是生活随笔為你收集整理的AtCoder AGC033F Adding Edges (图论)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久伊人热| 精品国产免费观看 | www.99在线| 日韩久久在线 | 日韩视频在线免费 | 性chinese天美传媒麻 | 成人激情视频在线播放 | 韩国电影大尺度在线观看 | 日韩欧| 成人在线视频网址 | 中文字幕在线视频一区二区 | 麻豆视频网 | 四季av一区二区凹凸精品 | 一级免费在线观看 | 日韩三级免费观看 | 国产亚洲精品码 | 精品视频免费在线观看 | 每日更新在线观看av | 国产毛片毛片毛片 | 一区二区三区av在线 | 久草综合在线 | 亚洲乱码精品久久久久 | 黑人3p波多野结衣在线观看 | 欧美人在线 | 亚洲免费网站 | 激情另类小说 | 久久精工是国产品牌吗 | 午夜av免费在线观看 | 欧美黄页网站 | 欧美极品少妇×xxxbbb | 麻豆蜜臀| 丰满人妻一区二区三区免费视频棣 | 天天天色综合 | 亚洲色图偷拍 | 东京热无码av一区二区 | 久久久精品动漫 | av狠狠 | 日日狠狠久久 | 精品一区二区久久 | 日本少妇xxxxx | 欧美精品一级片 | 日韩经典一区二区 | 2024av视频| jizz视频| 欧美7777| 亚洲一区久久久 | 国产精品自拍一区 | 在线免费看污片 | 欧美另类极品videosbest最新版本 | 好吊妞视频这里只有精品 | 手机在线看永久av片免费 | 久久久影视 | 操极品| 黄a毛片 | 麻豆md0077饥渴少妇 | 手机看黄色 | 亚洲色图视频在线 | 天天色一色| 插我舔内射18免费视频 | 国产亚洲系列 | 国产精品免费av | 麻豆91av| 51av在线| 久久妇女| 玩偶游戏在线观看免费 | 韩国成人在线视频 | 哺乳援交吃奶在线播放 | 成人特级片 | 国产91精品看黄网站在线观看 | 天堂va欧美va亚洲va老司机 | 毛片免费全部无码播放 | 青青操免费 | 国产一区二区黄 | 国产农村妇女毛片精品久久 | 免费在线你懂的 | 蜜桃香蕉视频 | 懂色av懂色av粉嫩av分享吧 | 国产伦精品一区二区三区视频痴汉 | 亚洲AV无码精品一区二区三区 | 538国产精品一区二区免费视频 | 杏导航aⅴ福利网站 | 日韩一区二区免费播放 | 日韩亚州 | 中文字幕精品一区久久久久 | 911亚洲精选 | 四虎视频国产精品免费入口 | 给我免费观看片在线电影的 | 成人午夜视频一区二区播放 | 五月婷丁香| 美女天天操 | 黄片一区二区 | www.成人在线| 国产麻豆精品一区二区 | 久久综合亚洲色hezyo国产 | 精品国产一区二区三区久久久久久 | 黄色性网站 | 午夜精品一区二区三区在线 | 91中文字幕在线视频 | 双性懵懂美人被强制调教 |