bzoj 1116(構造 並查集)

2021-07-11 03:05:08 字數 1147 閱讀 9277

time limit: 10 sec  

memory limit: 162 mb

submit: 801  

solved: 440 [

submit][

status][

discuss]

byteotia城市有n個 towns m條雙向roads. 每條 road 連線 兩個不同的 towns ,沒有重複的road. 你要把其中一些road變成單向邊使得:每個town都有且只有乙個入度

第一行輸入n m.1 <= n<= 100000,1 <= m <= 200000 下面m行用於描述m條邊.

tak或者nie 常做poi的同學,應該知道這兩個單詞的了...

4 51 2

2 31 3

3 41 4

tak上圖給出了一種連線方式.

解題思路:這道題算構造吧,首先將每個點與它能連到的點相連(並查集)再之後只

需判斷每乙個塊中是否存在一條環,也就是在其餘沒用上的邊中,是否有是連線這個

塊中的兩個點的。因為這樣就可以把這條邊的乙個點作為當前塊的根,保證有解。

#include

#include

#include

#include

using namespace std;

int n,m;

int f[100011];

bool pan[100011];

inline int read()

while (y>='0' && y<='9')

return x*f;

}int find(int o)

int main()

memset(pan,false,sizeof(pan));

int opp=0;

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

else  }

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

if (pan[i]) 

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

}printf("tak"); return 0;

}

hdu 1116 尤拉迴路 並查集

給你一些英文單詞,判斷所有單詞能不能連成一串,類似成語接龍的意思。但是如果有多個重複的單詞時,也必須滿足這樣的條件才能算yes。否則都是不可能的情況。尤拉迴路和尤拉通路的判定可以總結為如下 1 所有的點聯通 2 尤拉迴路中所有點的入度和出度一樣。3 尤拉通路中起點的入度 出度 1,終點的 初度 入度...

並查集 並查集

本文參考了 挑戰程式設計競賽 和jennica的github題解 陣列版 int parent max n int rank max n void init int n int find int x else void union int x,int y else 結構體版 struct node ...

bzoj 1104 貪心 並查集

題意 n m的網格,所有格仔都被水淹沒,給定一些關鍵點,求用最少的抽水機抽乾所有關鍵點的水 水的流動遵循連通器原理 我覺得這道題的真名應該叫做 被水淹沒,不知所措 考試的時候自己yy出來的好棒棒 蠻好的一道題 經過貪心可知,1 一定存在一種最優解使所有的水幫浦都在關鍵點上 2 由於水都是從高往低留,...