題目思路:主要有兩種思路:1.帶權並查集2.挑戰程式上的演算法(個人理解也算是帶權並查集的一種,但是更易懂,思路更清晰)
(介紹挑戰上的演算法) 將整個陣列開到3倍,分3個組,每個組之間的關係確定x,y的關係(判定假話),x,y的關係確定合併哪些組的元素
挑戰程式p88
#include #include#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define lson root<<1,l,mid
#define rson root<<1|1,mid+1,r
#define fi first
#define se second
#define ping(x,y) ((x-y)*(x-y))
#define mst(x,y) memset(x,y,sizeof(x))
#define mcp(x,y) memcpy(x,y,sizeof(y))
#define min(x,y) (x#define max(x,y) (x>y?x:y)
using
namespace
std;
#define gamma 0.5772156649015328606065120
#define mod 100000007
#define inf 0x3f3f3f3f
#define n 150010
#define maxn 10001000typedef
long
long
ll;typedef pair
pii;
intfp[n];
intn,m;
int findp(int x)
inline
int same(int x,int y)
inline
void union(int x,int y)
intmain()
}else}}
printf(
"%d\n
",ans);
}return0;
}
這道題必須單組輸入,加eof就wa,太坑了
參考題解:傳送門
poj1182 食物鏈(經典並查集)
題意 中文題 思路 最詳細的題解 include include include include include include include include include include include include include using namespace std define ma...
POJ 1182 食物鏈 經典並查集
食物鏈 time limit 1000ms memory limit 10000k total submissions 57770 accepted 16890 description 動物王國中有三類動物a,b,c,這三類動物的食物鏈構成了有趣的環形。a吃b,b吃c,c吃a。現有n個動物,以1 n...
POJ 1182 食物鏈 並查集經典
思路 設r x 表示節點x與根結點的關係,px表示x的根結點。記錄每個節點與其父節點的關係,就能很方便知道每個節點以及和它的父節點的關係。struct nodea maxn 關係 0表示同類,1表示父節點吃子節點,2表示子節點吃父節點 現在給定節點x和y,它們的關係是rel,如何判斷這句話是真還是假...