///基本思路:帶權並查集(簡單的理解就是將有關係的點合併到乙個集合,記錄每個點到集合根節點的權重)
#include #include #include #define max 50010
using namespace std;
int par[max];///記錄集合根節點
int offset[max];///記錄每個節點到根節點的偏移量
int n,m;
void make_set()
}int find_set(int x)
return par[x];
}void union_set(int x,int y,int v)
int main()
if(d==1)
else if(d==2)
if(find_set(a)==find_set(b))
else
union_set(a,b,1);}}
printf("%d\n",ans);
return 0;
}
poj 1182 食物鏈 帶權並查集
這個題需要將動物分成3種,每次以y 0為物件,吃他的x為1,需要注意的是下一次碰到x cha函式遞迴更新與x有關的物件 include include include includeusing namespace std define n 50005 int father n num n int c...
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 當前的話與前面的某些真的...