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 由於水都是從高往低留,...