題目大意:中文題,很容易就理解。
思路:偶然間看到某大佬的這個 向量偏移的並查集的方法,就拿來做例題了。
向量偏移,具體**已經不可考究了,不知是那位神仙發現的這種方法,就是說,把並查集的關係也加上權值(似乎是帶權並查集的另一種稱呼),具體的學習部落格見:
以後這就是一種思路了,用向量的思路來理解並查集,話說搞懂這個東西也不簡單啊,畢竟作者靈魂打字
ac:
#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;
#define ll long long
#define pair pair//#define max(a,b) (a)>(b)?(a):(b)
//#define min(a,b) (a)<(b)?(a):(b)
#define clean(a,b) memset(a,b,sizeof(a))// 水印
//std::ios::sync_with_stdio(false);
// register
const int maxn=5e4+10;
const int inf32=0x3f3f3f3f;
const ll inf64=0x3f3f3f3f3f3f3f3f;
const ll mod=1e9+7;
const double pi=acos(-1.0);
struct nodef[maxn];
int n,m;
void intt()
if(rela==2&&a==b)
if(rela==1)
else
} else
else
} }printf("%d\n",ans);
}
poj1182食物鏈 並查集 向量偏移
搞了好久才弄明白。之前學並查集從來沒想過能這麼用,並查集 向量偏移!與一般並查集只開乙個father陣列不同,還要開乙個ralation陣列用來記錄子節點與父節點的關係,對於此題,顯然每個點對應根節點可能有三種關係,我用ralation i 0記為i與根節點是同類,relation i 1記為i被根...
POJ 1182 食物鏈 並查集
此題利用並查集解決。對於每只動物i建立3個元素i a,i b,i c,並用這3 n個元素建立並查集。1 i x表示 i屬於種類x 2 並查集你的每一組表示組內所有元素代表的情況同時發生或不發生。對於每一條資訊,只需要按照下列操作即可 1.第一種 x,y同類,合併x a和y a x b和y b x c...
POJ 1182 食物鏈 (並查集)
食物鏈time limit 1000ms memory limit 10000k total submissions 48713 accepted 14202 description 動物王國中有三類動物a,b,c,這三類動物的食物鏈構成了有趣的環形。a吃b,b吃c,c吃a。現有n個動物,以1 n編...