牛客練習賽16C 任意點 並查集

2021-08-19 16:29:19 字數 735 閱讀 8879

平面上有若干個點,從每個點出發,你可以往東南西北任意方向走,直到碰到另乙個點,然後才可以改變方向。

請問至少需要加多少個點,使得點對之間互相可以到達。

第一行乙個整數n表示點數( 1 <= n <= 100)。

第二行n行,每行兩個整數xi, yi表示座標( 1 <= xi, yi <= 1000)。

y軸正方向為北,x軸正方形為東。

輸出乙個整數表示最少需要加的點的數目。

示例1輸入2

2 11 2輸出1

示例2輸入

22 1

4 1輸出

0

其實就是求 聯通塊問題,,,

#include 

using

namespace

std;

const

int maxn = 500;

int x[maxn], y[maxn], par[maxn];

int n;

void init()

int find(int x)

int main()

for(int i = 1; i <= n; i++) }}

int k = -1;

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

cout

<< k << endl;

return

0;}

牛客練習賽16 B 漂亮的樹,C 任意點

時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k 64bit io format lld 街上有n棵樹,標號為1.n,第i棵樹的高度為a i。定義這n棵樹是漂亮的,當且僅當 1.對於所有的i,a i an i 1 2.對於1 i n 2 不是整除 a i 1...

牛客練習賽41 C 抓捕盜竊犯(並查集)

題解 這個題中逃犯是可以連續移動的,而不是移動到乙個位置後停止,所以用並查集find函式將每個點的最開始的那個點作為父親,然後求屬於此節點的總和,最後排序找出前m大。include include include include using namespace std int n,m,x int p...

並查集 牛客練習賽41 C抓捕盜竊犯

題目鏈結 題意,初始每乙個城市都有一夥盜賊,沒過乙個時刻盜賊就會逃竄到另乙個城市,你可以在m個城市設定監察站,會逮捕所有經過該城市的盜賊 分析 仔細分細題目,因為每個城市的盜賊都是流動的,這就可能會形成環,而如果成環的話,在環所在任一城市都可以把這批城市的全部盜賊逮捕,就不需要再環上設多個監察站了,...