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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【NOIP】关押罪犯

發(fā)布時(shí)間:2023/12/13 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【NOIP】关押罪犯 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

帶權(quán)并查集,其實(shí)這種并查集的核心就是“向量”

1 #include<cstdio> 2 #include<iostream> 3 #include<algorithm> 4 using namespace std; 5 int n,m,p[20001],r[20001]; //0表示在同一監(jiān)獄,1表示在不同監(jiān)獄 6 struct node{ 7 int a,b,c; 8 }d[100000]; 9 int cmp(node x,node y){ 10 return x.c>y.c; 11 } 12 int findp(int x){ 13 if(p[x]!=x){ 14 int px=findp(p[x]); //找到真正的根結(jié)點(diǎn) 15 r[x]=(r[p[x]]+r[x])%2; //更新當(dāng)前結(jié)點(diǎn)x和真正根結(jié)點(diǎn)px的關(guān)系r[x],括號(hào)里的r[x]是和舊的父結(jié)點(diǎn)的關(guān)系 16 p[x]=px; 17 } 18 return p[x]; 19 } 20 int main() 21 { 22 int ok=0; 23 scanf("%d%d",&n,&m); 24 for(int i=1;i<=n;i++) p[i]=i; 25 for(int i=0;i<m;i++) 26 scanf("%d%d%d",&d[i].a,&d[i].b,&d[i].c); 27 sort(d,d+m,cmp); 28 for(int i=0;i<m;i++){ 29 int x=d[i].a,y=d[i].b,z=d[i].c; 30 int px=findp(x),py=findp(y); 31 if(px!=py){ //兩者不在同一集合,需要把x,y放在不同監(jiān)獄,也就是向量(x,y)為1 32 p[px]=py; //據(jù)此可以算出(px,py)的值,也就是r[px] 33 r[px]=(1+r[y]-r[x])%2; 34 } 35 else{ 36 if(!((r[y]-r[x]+2)%2)){ //根據(jù)向量關(guān)系,兩者在同一個(gè)監(jiān)獄 37 ok=1; 38 printf("%d",z); 39 break; 40 } 41 } 42 } 43 if(!ok) printf("0"); 44 return 0; 45 }

?

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

總結(jié)

以上是生活随笔為你收集整理的【NOIP】关押罪犯的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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