平面上有若干個點,從每個點出發,你可以往東南西北任意方向走,直到碰到另乙個點,然後才可以改變方向。
請問至少需要加多少個點,使得點對之間互相可以到達。
第一行乙個整數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個城市設定監察站,會逮捕所有經過該城市的盜賊 分析 仔細分細題目,因為每個城市的盜賊都是流動的,這就可能會形成環,而如果成環的話,在環所在任一城市都可以把這批城市的全部盜賊逮捕,就不需要再環上設多個監察站了,...