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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

4075. 染色 并查集的运用 并查集运用的小细节

發布時間:2024/3/26 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 4075. 染色 并查集的运用 并查集运用的小细节 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目

題解思路

這題思路還是比較明顯的,將顏色需要相同的氣球全部并查起來,在搜索集合中顏色最多的顏色,將其他的也染成這個。這樣貪心就能保證使用的染色最少。
時間復雜度為On,看起來這樣復雜很高,實際上每個點之會屬于一個集合,所以每個點只走了一次。

兩端代碼的不同讓我找了好久的bug。

if ( a[i] == i ){vector <int> pk ; vis[i] = cnt ;pk.push_back(b[i]) ; cnt ++ ; head.push_back(pk) ; } if ( find(i) == i ){vector <int> pk ; vis[i] = cnt ;pk.push_back(b[i]) ; cnt ++ ; head.push_back(pk) ; }

當驗證父節點關系的時候必須用find函數,不能直接判斷。
因為

這種情況下2號節點根本來不及路徑壓縮,所以當驗證父節點的時候必須用find函數來驗證

之前想過這種情況,因為在uio()加個find(y)就行,這里只想了2連3,卻沒想到1連3這種情況。

AC代碼

#include <bits/stdc++.h> //#include <unordered_map> //priority_queue #define PII pair<int,int> #define ll long longusing namespace std;const int INF = 0x3f3f3f3f; const int N = 200100 ; int n , m , k ; int a[N] ; int b[N] ; vector <vector <int> >head ; int vis[N] ; int find(int x ) {if ( x != a[x] )return a[x] = find(a[x]) ; return a[x] ; } void uio(int x , int y ) {int fx = find(x) ;int fy = find(y) ;if (fx != fy ){a[fy] = fx ; find(y) ; } } int main() {ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin >> n >> m >> k ; for (int i = 1 ; i <= n ; i++ )a[i] = i ; for (int i = 1 ; i <= n ; i++ )cin >> b[i] ; for (int i = 1 ; i <= m ; i++ ){int t1 , t2 ;cin >> t1 >> t2 ;uio( t1 , t2 ) ;}int cnt = 0 ; for (int i = 1 ; i <= n ; i++ ){if ( find(i) == i ){vector <int> pk ; vis[i] = cnt ;pk.push_back(b[i]) ; cnt ++ ; head.push_back(pk) ; }}for (int i = 1 ; i <= n ; i++ ){if (find(i) != i ){head[vis[a[i]]].push_back(b[i]) ; }}int ans = 0 ; /*for (int i = 0 ; i < head.size() ; i++ ) {for (int j = 0 ; j < head[i].size() ; j++ )cout << head[i][j] << " " ;cout << "\n" ; }*/for (int i = 0 ; i < head.size() ; i++ ){int ma = 0 ; unordered_map <int ,int > mp ; for (int j = 0 ; j < head[i].size() ; j++ ){mp[head[i][j]]++ ;}for (int j = 0 ; j < head[i].size() ; j++ ){ma = max(ma , mp[head[i][j]] );}if (head[i].size()){int sz = head[i].size() ; ans += sz - ma ; }}cout << ans << "\n" ; return 0 ; }

總結

以上是生活随笔為你收集整理的4075. 染色 并查集的运用 并查集运用的小细节的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 亚洲狠狠丁香婷婷综合久久久 | 国产美女啪啪 | 国产精彩视频在线 | 欧美日韩在线一区 | 涩里番在线观看 | 国产真实生活伦对白 | 内射国产内射夫妻免费频道 | 国产日韩视频在线观看 | 伊人免费在线观看高清版 | 九色丨蝌蚪丨成人 | 日韩免费观看一区二区 | 亚洲精品无吗 | 黑料福利 | 国产一区二区在线播放视频 | 精品丰满人妻无套内射 | 熟妇人妻中文av无码 | 国产91网址| 免费看av软件 | 国产911视频 | 欧美美女一级片 | 久久天堂网 | 手机看片欧美 | 激情综合色| 少妇特殊按摩高潮惨叫无码 | 精品电影在线观看 | 亚洲精品久久久久久久蜜桃 | 国产精品久久AV无码 | 久久久久一级 | 99久久婷婷| 亚洲一级网 | 美女破处视频 | 3d动漫精品啪啪一区二区下载 | 久久中文视频 | 国产91精品高潮白浆喷水 | 可以直接看的毛片 | 涩涩资源网 | 国产伦精品一区二区三区免费迷 | 亚洲高潮av| 人妻少妇精品视频一区二区三区 | 天堂一区在线观看 | 已满18岁免费观看电视连续剧 | 国产精品操 | 天天爽夜夜爽夜夜爽精品 | 国产婷婷在线观看 | 91丨国产丨白丝 | 亚洲黄色小说网 | 色狠av| 铠甲勇士猎铠 | 欧美人与禽zozzozzo | 黄色网战大全 | 污污内射久久一区二区欧美日韩 | 国产无遮挡a片又黄又爽 | 日本免费在线视频观看 | 国产精品白嫩极品美女视频 | 在线观看中文字幕 | 天堂成人在线 | 国产不卡精品 | 亚洲av日韩av不卡在线观看 | 免费观看污 | 激情五月五月婷婷 | 日本欧美中文字幕 | 神马国产 | 久操中文| 国产欧美一区二区三区视频在线观看 | 男女无套免费视频网站动漫 | 手机看片欧美日韩 | 欧美一区二区三区精品 | 欧美久久免费 | 午夜生活片 | 国产黄色片在线播放 | 小宝贝真紧h军人h | 99国产精品人妻噜啊噜 | 午夜久久电影 | 四虎网站在线播放 | 久久午夜国产 | 在线成人一区二区 | 中文字幕在线观看免费 | 日韩精品xxx | 欧美性69 | 色射影院| 手机在线中文字幕 | 黄色污网站在线观看 | 成 人片 黄 色 大 片 | 天天想你在线观看完整版电影免费 | 五月婷婷啪啪 | 艳妇臀荡乳欲伦交换h漫 | 夜夜操天天 | 黄色无毒网站 | 爱情岛论语亚洲入口 | 亚洲乱熟女一区二区三区小说 | 亚洲美女在线视频 | 免费91看片 | 日日操日日摸 | 亚洲色图50p | 91九色国产视频 | 成人有色视频 | 精品一区二区三区免费毛片 | 日韩夜夜高潮夜夜爽无码 | 中文字幕2021|