poj 1182 食物鏈 帶權並查集

2021-06-22 04:43:16 字數 551 閱讀 3692

這個題需要將動物分成3種,每次以y=0為物件,吃他的x為1,,需要注意的是下一次碰到x cha函式遞迴更新與x有關的物件

#include#include#include#includeusing namespace std;

#define n 50005

int father[n],num[n];

int cha(int x)

return father[x];

}int main()

int x,y,len;

while(m--)

if(x==y&&len==2)

int xx=cha(x);

int yy=cha(y);

if(xx!=yy)

else

}printf("%d\n",ans);

return 0;

}

因為以以y為物件,題目說輸入2時,代表x吃y,而我們規定吃y的權為1,所以要2-1=1;

其實最重要的是那個cha函式,仔細體會吧,我也是看別人的才想通的

poj1182食物鏈 帶權並查集

基本思路 帶權並查集 簡單的理解就是將有關係的點合併到乙個集合,記錄每個點到集合根節點的權重 include include include define max 50010 using namespace std int par max 記錄集合根節點 int offset max 記錄每個節點到...

poj 1182 食物鏈 帶權並查集

食物鏈 time limit 1000ms memory limit 10000k total submissions 50713 accepted 14818 description 動物王國中有三類動物a,b,c,這三類動物的食物鏈構成了有趣的環形。a吃b,b吃c,c吃a。現有n個動物,以1 n...

POJ 1182 食物鏈(帶權並查集)

a,b,c三種動物,a吃b,b吃c,c吃a。有n個動物,他們編號為1 n。輸入 第一行n,k,分別表示動物個數,給出k句話 有真有假 接下來n行每行一句話,每句的格式為三個整數 d,x,y。x,y為動物編號,d為1時表示x,y是同類,d為2時表示x吃y。說明 假話有三種 1 當前的話與前面的某些真的...