POJ 2236 解題報告

2021-09-30 13:10:49 字數 1037 閱讀 4641

這道題是並查集(union-find)應用。知道後就簡單了。之前已經多次寫過了。這裡用的是之前1703的程式。

剛開始用的dfs搜尋,超時了,看了discuss才知道是並查集。

thestoryofsnow

2236

accepted

196k

1079ms

c++1957b

/* 

id: thestor1

lang: c++

task: poj2236

*/#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;

const int maxn = 1001;

void makeset(const int n, vector&parent, vector&rank)

}int find(int u, vector&parent)

return parent[u];

}void union_set(int u, int v, vector&parent, vector&rank)

if (rank[ru] < rank[rv])

else if (rank[rv] < rank[ru])

else }

int main()

for (int i = 0; i < n; ++i)

vectorparent(n), rank(n);

makeset(n, parent, rank);

char type;

while (scanf(" %c", &type) > 0)}}

repired[p] = true;

} else if (type == 's')

else

}} return 0;

}

2236解題報告

今天繼續練並查集,一路刷了好幾題,現在把做的幾個都補上.2236這道題主要考的是並查集,另外我用乙個陣列來儲存好的點來減少部分無謂的搜尋.include define connect x1,y1,x2,y2,max x1 x2 x1 x2 y1 y2 y1 y2 max max typedef st...

POJ2236 簡單並查集

poj2236 題目大意 有很多臺電腦,兩台電腦距離在d之內才能通訊,或者通過第三台電腦進行通訊。判斷兩台電腦能否通訊。0表示修復,s表示測試。題解 這是簡單的並查集,s的時候只要判斷兩台電腦是不是在乙個集合中就行,0將兩個點合併的時候注意要判斷距離是不是小於d。include include in...

poj 2236 並查集模板

題意 n台壞了的計算機放置在n個不同的位置,若兩台計算機的距離不超過d且兩台計算機都已修好,那麼這兩台計算機可以通訊。間接通訊也叫做通訊。現進行若干次操作,修計算機或查詢兩台計算機是否可通訊。查詢時判斷時候可通訊。題解 並查集 1.這個就是並查集模板題。2.憑藉著以往的記憶寫了乙個先是wa後是t,看...